Windows 中安装ActiveMQ
- 下载安装包
- 解压
- 直接启动
- 使用管理员的身份运行installService.bat
- 打开服务:
- 错误解决方法:当打开服务的时候,提示错误码1067的解决方法:
- 打开
- 设置为Java.exe的绝对路径
- 使用服务启动
- 点击Manage ActiveMQ broker
- 使用用户名和密码登录,都是admin
linux 下安装ActiveMQ
- 下载安装包
- 将安装包拷贝到linux
- 解压tar -zxvf 文件名(解压在当前文件夹)
- 进入到bin文件夹启动服务
- ./activemq start
- netstat -anp|grep 61616
- 设置防火墙,开启端口号
- /sbin/iptables -I INPUT -p tcp –dport 8161 -j ACCEPT
- /sbin/iptables -I INPUT -p tcp –dport 61616 -j ACCEPT
- 保存:/etc/rc.d/init.d/iptables save
- 打开web管理页面:http:ip:8161
- 使用admin账号登录
JMS代码演练
使用JMS接口规范的连接ActiveMQ
- 创建生产者
- 创建发布者
- 创建消费者
- 创建订阅者
创建生产者
@Test
// 创建生产者
public void test1() {
// url是连接消息中间件的地址
String url = "tcp://192.168.79.134:61616";
// 目标的名字
String queueName = "hello";
// 创建连接工厂,通过url
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
try {
// 创建连接
Connection connection = connectionFactory.createConnection();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建一个目标
Destination destination = session.createQueue(queueName);
// 创建生产者
MessageProducer producer = session.createProducer(destination);
for(int i = 0 ; i < 100 ; i ++) {
// 创建消息
TextMessage message = session.createTextMessage("test :" + i);
// 发布消息
producer.send(message);
System.out.println("成功发送:" + message);
}
// 关闭连接
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
- 结果:
- 查看服务器
创建消费者
@Test
// 创建消费者
public void test3() {
// url是连接消息中间件的地址
String url = "tcp://192.168.79.134:61616";
// 目标的名字
String queueName = "hello";
// 创建连接工厂,通过url
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
try {
// 创建连接
Connection connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建一个目标
Destination destination = session.createQueue(queueName);
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 创建一个监听器
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println("消费者2:" + textMessage.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// 由于消息的接受是异步的这里不能关闭连接
} catch (JMSException e) {
e.printStackTrace();
}
}