ActiveMQ之Queue
Queue实现的是点到点模型,在以下的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue发送多个消息。
代码如下:
public class QueueTest {
/**
* @param args
*/
public static void main(String[] args) {
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory("vm://localhost");
Connection con=null;
Session session=null;
Queue queue=null;
try {
con=factory.createConnection();
//这句很重要
con.start();
} catch (JMSException e) {
e.printStackTrace();
}
try {
session=con.createSession(false, Session.AUTO_ACKNOWLEDGE);
} catch (JMSException e) {
System.out.println("--创建Session出现错误--");
}
queue=new ActiveMQQueue("testQueue");
//注册消费者1
try {
MessageConsumer consumer1=session.createConsumer(queue);
consumer1.setMessageListener(new MessageListener(){
public void onMessage(Message arg0) {
try {
System.out.println("消费者1接收到的消息 ---------"+((TextMessage)arg0).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();}
//注册消费者2
try {
MessageConsumer consumer2=session.createConsumer(queue);
consumer2.setMessageListener(new MessageListener(){
public void onMessage(Message arg0) {
try {
System.out.println("消费者2接收到的消息---------"+((TextMessage)arg0).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();
}
//注册一个消息生产者
try {
MessageProducer procedure=session.createProducer(queue);
for(int i=1;i<=10;i++)
{
procedure.send(session.createTextMessage("message"+i));
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
运行这个例子 可以看出:每个消息被消费了一次,但是如果有多个消费者共同监听一个Queue的话,无法确定一个消息最终会被那个消费者消费。
ActiveMQ之Queue的更多相关文章
- ActiveMQ的queue以及topic两种消息处理机制分析
1 queue与topic的技术特点对比 对比项 Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状 ...
- SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)
目录 一.前言 二.ActiveMq的下载和使用 三.依赖准备 四.yml文件配置 五.配置Bean 六.创建生产者(Queue+Topic) 七.创建消费者(Topic模式下) 八.测试结果(Top ...
- 【ActiveMQ入门-5】ActiveMQ学习-Queue与Topic的比较
Queue与Topic的比较 1.JMS Queue执行load balancer语义: 一条消息仅能被一个consumer收到. 如果在message发送的时候没有可用的consumer,那么它将被 ...
- ActiveMQ Queue vs Topic vs VirtualTopic
之前写过一篇文章讨论VirtualTopic,但觉得不够透彻,这里再根据实验结果进行一次横向对比破除模糊和选择困难症. 文章中核心对比要素是:消息副本和负载均衡 Queue的特点和优势 ActiveM ...
- ActiveMQ中的Destination高级特性(一)
---------------------------------------------------------------------------------------- Destination ...
- Activemq Jolokia
打开JMX <broker … useJmx="true"> … <managementContext> <managementContext cre ...
- ActiveMQ;RabbitMQ;ZeroMQ
中间件类型: Embedded middleware: As the name suggests, this typeof middleware handles embedded applicatio ...
- 消息队列-推/拉模式学习 & ActiveMQ及JMS学习
一种分类是推和拉 . 还有一种分类是 Queue 和 Pub/Sub . 先看的这一篇:http://blog.csdn.net/heyutao007/article/details/50131089 ...
- JMX操作ActiveMQ(1)
我们知道ActiveMQ broker的管理接口是通过JMX方式提供的. 一个简单的访问方式就是通过jconsole,输入 service:jmx:rmi:///jndi/rmi://localhos ...
随机推荐
- Java基础--访问权限控制符
今天我们来探讨一下访问权限控制符. 使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办? 使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2 ...
- IE浏览器部分版本不支持background-siza属性问题
background-size是CSS3新增的属性,但是IE8以下还是不支持,可以通过滤镜来实现这样的一个效果 background-size:contain; // 缩小图片来适应元素的尺寸(保持像 ...
- hdu 3111 DLX解数独
思路:裸的DLX解数独.关键是建图,感觉还不如写个dfs直接,DLX写这个的代码很烦. #include<set> #include<map> #include<cmat ...
- hdu 4424 并查集
思路:将边从大到小排序,判断向哪边连,能使总和最大. #include<map> #include<set> #include<cmath> #include< ...
- [转载]在线考试javaScript倒计时
<script type="text/javascript"> /* ================== hi.baidu.com/coolinc === */ va ...
- Ajax异步操作集合啦(阿贾克斯)
/* * Ajax的核心操作对象是xmlHttpRequest * 简化操作步骤:实例化一个xmlHttpRequest对象 ==> 发送请求 ==> 接受响应 ==> 执行回调 * ...
- Android 直接拨打电话界面
Android 拨号界面和直接拨打电话界面代码控制 //定义TAG为空 private static final String TAG = null; //定义Button的点击事件 tell.set ...
- MVC基础知识-持续更新....
1.如何在自动生成的视图中显示需要的字段名称: 在相应的定义字段中添加Display,例如: [Display(Name = "用户名:")] public string User ...
- 根据数据库内容动态生成html页面
之前使用了很多方法,但是都很复杂. 项目里包括了数据库的管理页面,对数据库进行修改(新增,插入,删除)等之后,在另一个页面使用. 使用时采用按下相应label弹出所有信息的方法,以html的形式将数据 ...
- 项目中重新引用WCF报错
今天在一个项目里,重新更新WCF引用的时候,居然报错了,提示根本找不到那个WCF接口,我赶紧跑去新建了一个空项目,试着用相同的地址引用一下,发现是可以的,完全ok 既然是虚惊一场,那就得想办法把这个W ...