ActiveMQ入门经典的生产者消费者

什么是ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位

1.多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
2.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去
3.支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
4.支持Ajax
5.可以很容易的进行测试和使用
ActiveMQ的消息形式
对于消息的传递有两种类型:
一种是点对点的,即一个生产者和一个消费者一一对应;
另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
  · StreamMessage -- Java原始值的数据流
  · MapMessage--一套名称-值对
  · TextMessage--一个字符串对象
  · ObjectMessage--一个序列化的 Java对象
  · BytesMessage--一个字节的数据流

ActiveMQ的安装
1.下载ActivityMQ
http://activemq.apache.org/download-archives.html
2.启动ActivityMQ
解压apache-activemq-5.4.3-bin.zip到指定目录双击apache-activemq-5.4.3\bin\activemq.bat 
启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue,此队列在代码中会使用到

在maven项目下需要导入的jar包。

<dependencies>
  <dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-all</artifactId>
  <version>5.4.3</version>
  </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
  </dependencies>

最后是两个实例生产者和消费者。

生产者:

@Test
	public void product() throws Exception{
		//第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
		//第二步:使用ConnectionFactory对象创建一个Connection对象。
		Connection con= connectionFactory.createConnection();
		//第三步:开启连接,调用Connection对象的start方法。
		con.start();
		//第四步:使用Connection对象创建一个Session对象。(参数(“是否开启事务”,“应答模式”))
		Session session=con.createSession(false,Session.AUTO_ACKNOWLEDGE);
		//第五步:使用Session对象创建一个Queue对象。(参数要和在页面申请的队列名保持一致)
		Queue queue=session.createQueue("FirstQueue");
		//第六步:使用Session对象创建一个Producer对象。
		MessageProducer producer=session.createProducer(queue);
		//第七步:创建一个Message对象,创建一个TextMessage对象。
		TextMessage textMessage=session.createTextMessage("发送的消息");
		//第八步:使用Producer对象发送消息。
		producer.send(textMessage);
		//第九步:关闭资源。
		producer.close();
		session.close();
		con.close();
	}
	

消费者:

@Test
	public void consumer() throws Exception{
		//第一步:创建一个ConnectionFactory对象。
		 ConnectionFactory factory= new ActiveMQConnectionFactory("tcp://localhost:61616");
		//第二步:从ConnectionFactory对象中获得一个Connection对象。
		 Connection connection=factory.createConnection();
		//第三步:开启连接。调用Connection对象的start方法。
		 connection.start();
		//第四步:使用Connection对象创建一个Session对象。
		 Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		//第五步:使用Session对象创建一个队列Queue。和发送端保持一致queue,并且队列的名称一致。
		Queue queue=session.createQueue("FirstQueue");
		//第六步:使用Session对象创建一个Consumer对象。
		MessageConsumer consumer=session.createConsumer(queue);
		//第七步:接收消息。
		consumer.setMessageListener(new MessageListener() {
			
			@Override
			public void onMessage(Message message) {
				TextMessage textMessage=(TextMessage) message;
				try {
					String text=textMessage.getText();
					//第八步:打印消息。
					System.out.println(text);
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		//一定要加上这句话,程序比监听器运行快
		System.in.read();
		//第九步:关闭资源
		consumer.close();
		session.close();
		connection.close();

	}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值