ActiveMQ

安装&配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

wget -P ~/soft/ "http://ou0y29lb2.bkt.clouddn.com/apache-activemq-5.12.0-bin.tar.gz"

if [ ! -d "/usr/local/activemq" ]; then
mkdir /usr/local/activemq
fi


cp $HOME/soft/apache-activemq-5.12.0-bin.tar.gz /usr/local/activemq

cd /usr/local/activemq

tar -zxvf apache-activemq-5.12.0-bin.tar.gz

/usr/local/activemq/apache-activemq-5.12.0/bin/activemq start

# 默认端口 8161

# http://172.16.124.134:8161/admin

# 默认账号密码 admin admin

访问出错问题解决

访问ActiveMQ后台管理系统出现Service Unavailable,解决步骤如下:

第一步:停止ActiveMQ

1
/root/apache-activemq-5.12.0/bin/activemq stop

第二步:查看ActiveMQ后台

1
/root/apache-activemq-5.12.0/bin/activemq console

找出错误:主机名未能正确解析
Alt text

第三步:修改hosts文件,将主机名称添加hosts文件中。

1
vim /etc/hosts

Alt text

第四步:重启虚拟机。


activeMQ的两个默认端口8161和61616的区别

http://ask.csdn.net/questions/672298

8161是后台管理系统,61616是给java用的tcp端口

一般是没关联,只是面向不同的服务而已。

就跟一个Linux开启的21和22端口一样。

ActiveMQ问题分析

  1. 生产者发送消息到broker失败了,怎么办?
  • 在生产者本身业务逻辑中,添加日志记录(要记录消息目的地以及发送的信息内容)
  • 开发一段代码或者一个功能点,去实现重新发送消息的功能。
  1. broker接收消息之后,服务器挂掉,怎么办?
  • 搭建ActiveMQ集群
  • 对消息持久化
  1. 消费者从broker,将消息接收到之后,业务处理失败怎么办?
  • 在消费者本身业务逻辑中,添加日志记录(要记录接收到的消息以及信息目的地)
  • 要分析业务处理失败的原因,并改正
  • 重新编写消息处理代码,去重新处理。
  1. 消费者从broker,没有成功消费消息?
  • 重新执行单元测试代码或者功能去接收指定消息。

ActiveMQ集群 安装&配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash

#wget -P ~/soft/ "http://ou0y29lb2.bkt.clouddn.com/apache-activemq-5.12.0-bin.tar.gz"

if [ ! -d "/usr/local/activemq-cluster" ]; then
mkdir /usr/local/activemq-cluster
fi

cp $HOME/soft/apache-activemq-5.12.0-bin.tar.gz /usr/local/activemq-cluster

cd /usr/local/activemq-cluster

tar -zxvf apache-activemq-5.12.0-bin.tar.gz

mv apache-activemq-5.12.0 mq-01

sed -E -i -e 's/<property name="port" value="[0-9]{4}"\/>/<property name="port" value="8162"\/>/g' /usr/local/activemq-cluster/mq-01/conf/jetty.xml


sed -i -e '/<transportConnector .*\/>/d' /usr/local/activemq-cluster/mq-01/conf/activemq.xml

sed -i -e '/<transportConnectors>/a\'$'\n<transportConnector name="openwire" uri="tcp:\/\/0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"\/>' /usr/local/activemq-cluster/mq-01/conf/activemq.xml


sed -i -e '/<broker xmlns/a\\<networkConnectors>\
<networkConnector uri="static:(tcp:\/\/127.0.0.1:61618)" duplex="true"\/>\
<\/networkConnectors>' /usr/local/activemq-cluster/mq-01/conf/activemq.xml


cd /usr/local/activemq-cluster

cp mq-01 mq-02 -r

sed -i -e '/networkConnector/d' /usr/local/activemq-cluster/mq-02/conf/activemq.xml

sed -E -i -e '/transportConnector name/s/0.0.0.0:[0-9]{5}/0.0.0.0:61618/' /usr/local/activemq-cluster/mq-02/conf/activemq.xml

sed -E -i -e 's/<property name="port" value="[0-9]{4}"\/>/<property name="port" value="8163"\/>/g' /usr/local/activemq-cluster/mq-02/conf/jetty.xml

# 启动
/usr/local/activemq-cluster/mq-01/bin/activemq start
/usr/local/activemq-cluster/mq-02/bin/activemq start

col命令

1
2
3
4
5
6
7
# Linux col命令用于过滤控制字符。

#在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。

man grep | col -b

# -b 过滤掉所有的控制字符,包括RLF和HRLF。

1
2
sed -ie '/networkConnector/d' activemq.xml
# 写成这样和GNU shell 一样了...BSD shell

maven工程用 Favorites管理…

配合快捷键 ⌥F1 快速定位
Alt text

awk gsub & sub使用, 着色

1
awk '/\${.*}/{gsub(/\${[a-z.= 0-9]+}/,"\033[0;31;1m&\033[0m");print}' ./e3-item-web/src/main/webapp/WEB-INF/jsp/item.jsp

reids ttl命令查看对象生命剩余时间

Alt text

redis查询中文

1
./redis-cli -p 7003 -c --raw get item:151931160828312 | sed 's/[a-zA-Z0-9[:punct:]]//g' | grep -v '^$'

参考:
http://blog.csdn.net/u010627840/article/details/41863395