amq简单使用
来源:互联网 发布:儿童学汉字软件 编辑:程序博客网 时间:2024/06/05 01:25
queue sender
package org.arrow.amq.test;import javax.jms.*;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.jms.pool.PooledConnection;import org.apache.activemq.jms.pool.PooledConnectionFactory;import org.apache.activemq.jms.pool.PooledProducer;import org.apache.activemq.jms.pool.PooledSession;import java.util.Random;public class Sender { public static void main(String[] args) throws JMSException, InterruptedException { final String URL = "failover:(tcp://192.168.2.44:61616,tcp://192.168.2.48:61616,tcp://192.168.2.49:61616)"; ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, URL); PooledConnectionFactory fact2 = new PooledConnectionFactory(); fact2.setConnectionFactory(factory); Connection connection = fact2.createConnection(); Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); Destination desc = session.createQueue("TestQueue"); MessageProducer producer = session.createProducer(desc); Queue replyTo = session.createQueue("TestReplyToQueue"); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); while(true){ int flag = new Random().nextInt(1024); ObjectMessage msg = session.createObjectMessage("hello world..." + flag); // 使用不同的属性,消费时可以只消费指定的消息 msg.setStringProperty("group", (flag % 2) + "" ); // 可以在此放一个replyTo, 告诉消费者回复到哪个消息队列 // 消费者可以在onMessage时取出来,并手动生成一个生成者发送数据到该队列 msg.setJMSReplyTo(replyTo); producer.send(msg); Thread.sleep(1000); }// session.commit();// System.out.println("sent...");// session.close();// connection.close(); }}
receiver
package org.arrow.amq.test;import javax.jms.*;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;public class Receiver { static int i = 0; public static void main(String[] args) throws JMSException { final String URL = "failover:(tcp://192.168.2.44:61616,tcp://192.168.2.49:61616,tcp://192.168.2.49:61616)"; // 连接工厂 ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, URL); // 获取连接 final Connection connection = factory.createConnection(); connection.start(); // 生成session, 参数1true,开启事务,必须commit确认消费,false时,自动应答 // true + Session.AUTO_ACKNOWLEDGE : 不commit时不会确认消费 // false + Session.AUTO_ACKNOWLEDGE : 接受到即确认消费 // false + Session.CLIENT_ACKNOWLEDGE: 不自动确认,需要手动确认 message.acknowledge()确认消费 // false + Session.DUPS_OK_ACKNOWLEDGE 不需要确认,也会自动消费 // AUTO_ACKNOWLEDGE:自动确认模式。 // DUPS_OK_ACKNOWLEDGE:允许确认模式的副本。接收应用程序来处理在会话对象的方法调用返回的消息后会收到一条确认消息,并允许重复确认。 // CLIENT_ACKNOWLEDGE 客户端手动确认 // 重要: true时将忽略b值,自动被设为SESSION_TRANSACTED Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 操作目标队列或主题 queue("TestQueue") 或 session.createTopic("TestTopic") Destination destination = session.createQueue("TestQueue"); // 生成消费者,同一队列中两个消息者消费不同属性的消息 MessageConsumer consumer1 = session.createConsumer(destination, "group='1'"); MessageConsumer consumer2 = session.createConsumer(destination, "group='0'"); // 方式1,使用consumer.receive()// ObjectMessage message = (ObjectMessage)consumer.receive();// if (message != null) {// String messageString = (String)message.getObject();// System.out.println("Receive1 : " + messageString);// } // 方式2:注册一个listener consumer1.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { Object object = null; try { object = ((ObjectMessage) message).getObject(); } catch (JMSException e) { e.printStackTrace(); } System.out.println(i ++ + "Receive2-1 : " + (String)object); } }); consumer2.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { Object object = null; try { object = ((ObjectMessage) message).getObject(); } catch (JMSException e) { e.printStackTrace(); } System.out.println(i ++ + "Receive2-2 : " + (String)object); } });// session.close();// connection.close(); }}
0 0
- amq简单使用
- AMQ
- ActiveMQ学习(三)Java中使用AMQ的简单实例
- amq原理
- amq安装
- AMQ虚拟Destinations
- AMQ 虚拟topic
- amq消息队列-rabbitMQ
- AMQ持久化方式
- AMQ consumer clusters 理解
- AMQ 虚拟topic
- mq-3-amq连接
- Spring整合AMQ
- ActiveMQ:AMQ安全校验及AMQ Console安全认证
- amq zeromq rabbitmq kafka 区别
- amq 源码分析之demo分析1
- amq入门之运行书上例子
- 从零开始···AMQ测试
- PAT 1066. 图像过滤(15)-乙级
- error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
- eclipse如何导入jar包
- Thinkphp5类加载机制
- 00003 不思议迷宫.0009.2.4:自动换装:在事件中实现自动换装
- amq简单使用
- 3、AssetBundle统一管理命名
- hdu 2094
- bootstrap-显示与隐藏
- QT程序设置图标
- 《Linux内核分析》MOOC课程第二次实验作业
- PHP面向对象编程设计模式(一)策略模式
- 称硬币_POJ
- Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库