ActiveMQ与RabbitMQ安装以及实现

ActiveMQ

1.下载ActiveMQ

去官方网站下载:http://activemq.apache.org/

2.运行ActiveMQ

解压缩apache-activemq-5.11.1-bin.zip,然后双击apache-activemq-5.11.1\bin\activemq.bat运行ActiveMQ程序。

启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。

3.创建Eclipse项目并运行

创建project:MQ,并导入apache-activemq-5.11.1\lib目录下需要用到的jar文件,项目结构如下图所示:

3.1.Sender.java

 1 package activeMQ;
 2 import javax.jms.Connection;
 3 import javax.jms.ConnectionFactory;
 4 import javax.jms.DeliveryMode;
 5 import javax.jms.Destination;
 6 import javax.jms.MessageProducer;
 7 import javax.jms.Session;
 8 import javax.jms.TextMessage;
 9
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12 public class Sender {
13     private static final int SEND_NUMBER = 10;
14
15     public static void main(String[] args) {
16         // ConnectionFactory :连接工厂,JMS 用它创建连接
17         ConnectionFactory connectionFactory;
18         // Connection :JMS 客户端到JMS Provider 的连接
19         Connection connection = null;
20         // Session: 一个发送或接收消息的线程
21         Session session;
22         // Destination :消息的目的地;消息发送给谁.
23         Destination destination;
24         // MessageProducer:消息发送者
25         MessageProducer producer;
26         // TextMessage message;
27         // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
28         connectionFactory = new ActiveMQConnectionFactory(
29                 ActiveMQConnection.DEFAULT_USER,
30                 ActiveMQConnection.DEFAULT_PASSWORD,
31                 "tcp://localhost:61616");
32         try {
33             // 构造从工厂得到连接对象
34             connection = connectionFactory.createConnection();
35             // 启动
36             connection.start();
37             // 获取操作连接
38             session = connection.createSession(Boolean.TRUE,
39                     Session.AUTO_ACKNOWLEDGE);
40             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
41             destination = session.createQueue("FirstQueue");
42             // 得到消息生成者【发送者】
43             producer = session.createProducer(destination);
44             // 设置不持久化,此处学习,实际根据项目决定
45             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
46             // 构造消息,此处写死,项目就是参数,或者方法获取
47             sendMessage(session, producer);
48             session.commit();
49         } catch (Exception e) {
50             e.printStackTrace();
51         } finally {
52             try {
53                 if (null != connection)
54                     connection.close();
55             } catch (Throwable ignore) {
56             }
57         }
58     }
59
60     public static void sendMessage(Session session, MessageProducer producer)
61             throws Exception {
62         for (int i = 1; i <= SEND_NUMBER; i++) {
63             TextMessage message = session
64                     .createTextMessage("ActiveMq 发送的消息" + i);
65             // 发送消息到目的地方
66             System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
67             producer.send(message);
68         }
69     }
70 }

3.2.Receiver.java

 1 package activeMQ;
 2
 3 import javax.jms.Connection;
 4 import javax.jms.ConnectionFactory;
 5 import javax.jms.Destination;
 6 import javax.jms.MessageConsumer;
 7 import javax.jms.Session;
 8 import javax.jms.TextMessage;
 9
10 import org.apache.activemq.ActiveMQConnection;
11 import org.apache.activemq.ActiveMQConnectionFactory;
12
13 public class Receiver {
14     public static void main(String[] args) {
15         // ConnectionFactory :连接工厂,JMS 用它创建连接
16         ConnectionFactory connectionFactory;
17         // Connection :JMS 客户端到JMS Provider 的连接
18         Connection connection = null;
19         // Session: 一个发送或接收消息的线程
20         Session session;
21         // Destination :消息的目的地;消息发送给谁.
22         Destination destination;
23         // 消费者,消息接收者
24         MessageConsumer consumer;
25         connectionFactory = new ActiveMQConnectionFactory(
26                 ActiveMQConnection.DEFAULT_USER,
27                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
28         try {
29             // 构造从工厂得到连接对象
30             connection = connectionFactory.createConnection();
31             // 启动
32             connection.start();
33             // 获取操作连接
34             session = connection.createSession(Boolean.FALSE,
35                     Session.AUTO_ACKNOWLEDGE);
36             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
37             destination = session.createQueue("FirstQueue");
38             consumer = session.createConsumer(destination);
39             while (true) {
40                 // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
41                 TextMessage message = (TextMessage) consumer.receive(500000);
42                 if (null != message) {
43                     System.out.println("收到消息" + message.getText());
44                 } else {
45                     break;
46                 }
47             }
48         } catch (Exception e) {
49             e.printStackTrace();
50         } finally {
51             try {
52                 if (null != connection)
53                     connection.close();
54             } catch (Throwable ignore) {
55             }
56         }
57     }
58 }

4.注意事项

  1. 最后接收者跟发送者在不同的机器上测试
  2. 项目所引用的jar最后在ActiveMQ下的lib中找,这样不会出现版本冲突。

5.测试过程

发送消息:ActiveMq 发送的消息1
发送消息:ActiveMq 发送的消息2
发送消息:ActiveMq 发送的消息3
发送消息:ActiveMq 发送的消息4
发送消息:ActiveMq 发送的消息5

收到消息ActiveMq 发送的消息1
收到消息ActiveMq 发送的消息2
收到消息ActiveMq 发送的消息3
收到消息ActiveMq 发送的消息4
收到消息ActiveMq 发送的消息5

RabbitMQ

1.RabbitMQ环境安装

1)下载erlang支持包:http://www.erlang.org/download.html 如图所示:


2)下载rabbitmq server:http://www.rabbitmq.com/releases/rabbitmq-server/


下载RabbitMQ client:http://www.rabbitmq.com/releases/rabbitmq-java-client/或者在http://www.rabbitmq.com/java-client.html

注:由于RabbitMQ
支持erlang、Java和.NET你可以找到不同语言的client支持版本。

2.配置环境变量

1)、新建变量:ERLANG_HOME=D:\Program Files\erl6.4,然后再path中添加%ERLANG_HOME%\bin;

2)、新建变量:RABBITMQ_SERVER=E:\rabbitmq_server-3.5.3,然后再path中添加%RABBITMQ_SERVER%\sbin;

3)、运行sbin/rabbitmq-server.bat,启动RabbitMQ服务器

RabbitMQ服务端是用AMPQ协议的, 而客户端支持多种语言(Java, .NET,Erlang......Maybe more........)。下面我们准备用java来写一个‘hello world’,测试RabbitMQ安装。

3.RabbitMQ客户端测试

3.1.Sender.java

 1 package rabbitMQ;
 2
 3 import java.io.IOException;
 4 import com.rabbitmq.client.Channel;
 5 import com.rabbitmq.client.Connection;
 6 import com.rabbitmq.client.ConnectionFactory;
 7
 8 /**
 9  *
10  * @author lvkun
11  *
12  * @having-line---------------------------------------------------------
13  * @filename Send.java
14  * @function TODO
15  * @download <a href=
16  *           ‘http://www.rabbitmq.com/download.html‘>http://www.rabbitmq.com/download.html</a
17  *           >
18  * @start-at 2015年5月24日,下午23:50:40
19  * @having-line---------------------------------------------------------
20  */
21 public class Send {
22     private final static String QUEUE_NAME = "hello";
23
24     public static void main(String[] args) throws IOException {
25         ConnectionFactory factory = new ConnectionFactory();
26         factory.setHost("localhost");
27         Connection connection = factory.newConnection();
28         Channel channel = connection.createChannel();
29
30         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
31         String message = "Hello World!";
32         channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
33         System.out.println(" [x] Sent ‘" + message + "‘");
34
35         channel.close();
36         connection.close();
37     }
38 }

3.2.Receiver.java

 1 package rabbitMQ;
 2
 3 import com.rabbitmq.client.Channel;
 4 import com.rabbitmq.client.Connection;
 5 import com.rabbitmq.client.ConnectionFactory;
 6 import com.rabbitmq.client.QueueingConsumer;
 7
 8 /**
 9  *
10  * @author lvkun
11  *
12  * @having-line---------------------------------------------------------
13  * @filename Receive.java
14  * @function TODO
15  * @download <a href=
16  *           ‘http://www.rabbitmq.com/download.html‘>http://www.rabbitmq.com/download.html</a
17  *           >
18  * @start-at 2015年5月24日,下午23:50:40
19  * @having-line---------------------------------------------------------
20  */
21 public class Receive {
22     private final static String QUEUE_NAME = "hello";
23
24     public static void main(String[] argv) throws Exception {
25
26         ConnectionFactory factory = new ConnectionFactory();
27         factory.setHost("localhost");
28         Connection connection = factory.newConnection();
29         Channel channel = connection.createChannel();
30
31         channel.queueDeclare(QUEUE_NAME, false, false, false, null);
32         System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
33
34         QueueingConsumer consumer = new QueueingConsumer(channel);
35         channel.basicConsume(QUEUE_NAME, true, consumer);
36
37         while (true) {
38             QueueingConsumer.Delivery delivery = consumer.nextDelivery();
39             String message = new String(delivery.getBody());
40             System.out.println(" [x] Received ‘" + message + "‘");
41         }
42     }
43 }

启动客户端程序测试效果图:

时间: 2024-10-22 16:46:08

ActiveMQ与RabbitMQ安装以及实现的相关文章

RabbitMQ安装和配置

RabbitMQ: MQ:message queue.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求.其中较为成熟的MQ产品有IBM WEBSPHERE MQ

activemq、rabbitmq、kafka原理和比较

一.activemq 虽然是java写的消息队列,但是提供Java, C, C++, C#, Ruby, Perl, Python, PHP各种客户端,所以语言上是没什么问题的.配置和使用,基本上是java xml这一套.同时对jms.spring之类的支持很友好. 而且因为是Java写的,所以可以作为一个jar包,放到java项目里,用代码启动和配置,这个对于java开发者而言是不是相当爽?毕竟还是有些场景,需要我们把队列放到自己项目内部,随项目启动而启动的.而且,还可以类似拓展tomcat一

server 2008r2 rabbitmq 安装web管理

在server 20008 r2 安装完之后打开 localhost:15672 显示无法找到网页 因为默认web管理没有启用 需要启用下,启用过程 1:打开rabbbitrq命令 (开始菜单rabbitmq文件夹下) 2:依次输入 (1)rabbitmq-plugins enable rabbitmq_management (2)rabbitmq-service stop (3)rabbitmq-service install (4)rabbitmq-service start 然后在打开就可

centos 7下rabbitmq安装

安装erlang环境 添加rabbitmq依赖的erlang yum命令repos # In /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing

RabbitMQ 安装与使用

RabbitMQ 安装与使用 前言 吃多了拉就是队列,吃饱了吐就是栈 使用场景 对操作的实时性要求不高,而需要执行的任务极为耗时:(发送短信,邮件提醒,更新文章阅读计数,记录用户操作日志) 存在异构系统间的整合: 安装 下载 Erlang 安装完确定ERLANG_HOME环境变量是否添加,否则:Setx ERLANG_HOME "D:\Program Files\erl8.2″ 下载安装包 安装完通过rabbitmqctl status确定rabbitmq状态 管理服务 默认安装成功会自动启动服

ActiveMQ;RabbitMQ;ZeroMQ

中间件类型: Embedded middleware: As the name suggests, this typeof middleware handles embedded applications (software or firmware). RPC middleware: RPC (Remote Procedure Call)middleware communicates with applications using calls. Object request broker: He

Windows下ActiveMQ下载、安装部署

Windows下ActiveMQ下载.安装部署 1.下载:http://activemq.apache.org/download.html 最新Windows版本 2.安装 (1) 首先配置JAVA环境变量 JAVA_HOME=D:\Program Files\Java\jdk1.5.0 CLASSPAHT=.;D:\Program Files\Java\jdk1.5.0\lib\tools.jar;D:\Program Files\Java\jdk1.5.0\lib\td.jar;D:\Pro

rabbitmq安装Management Plugin

运行和安装Rabbitmq Management的步骤如下: 1.进入Rabbitmq安装目录,运行rabbitmq-plugins enable rabbitmq_management 2.运行rabbitmqctl stop 3.打开浏览器访问:http://localhost:15672/#/

RabbitMQ安装配置

安装RabbitMQ windows下的安装是非常简单的,我们需要准备两个东西 erlang的环境  下载windows和与之对象的操作系统位数安装包 http://www.erlang.org/downloads RabbitMQ http://www.rabbitmq.com/download.html 下载完毕之后,先安装 erlang再安装 RabbitMQ 安装这后我们可以配置一下rabbitmq的环境变量 打开命令行运行rabbitmq-server 现在大功已经告成了,不过rabb