activemq 使用介绍

1,activemq 分为 queue和topic 两种

2,下面先介绍queue ,使用spring 集成

build.gradle

1compile "org.springframework:spring-jms:3.2.1.RELEASE" 2 compile "org.apache.activemq:activemq-core:5.7.0" 3 compile "ch.qos.logback:logback-core:1.0.9" 4 compile "ch.qos.logback:logback-classic:1.0.9" 5 compile "ch.qos.logback:logback-access:1.0.9" 6 testCompile group: 'junit', name: 'junit', version: '4.10'

applicationContext.xml

1<description>Spring公共配置</description> 2 3 <!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 --> 4 <context:component-scan base-package="net.tt64"/> 5 <!-- ActiveMQ 连接工厂 --> 6 <bean id="advancedConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 7 <property name="brokerURL" value="vm://cheyoushuo" /> 8 <property name="useAsyncSend" value="true" /> 9 </bean> 10 11 <!-- Spring Caching 连接工厂 --> 12 <bean id="advancedCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> 13 <property name="targetConnectionFactory" ref="advancedConnectionFactory" /> 14 <property name="sessionCacheSize" value="10" /> 15 </bean> 16 17 <!-- Queue定义 --> 18 <bean id="notifyQueue" class="org.apache.activemq.command.ActiveMQQueue"> 19 <constructor-arg value="test.jms" /> 20 </bean> 21 22 <!-- Spring JMS Template --> 23 <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 24 <property name="connectionFactory" ref="advancedCachingConnectionFactory" /> 25 <!-- 使 deliveryMode, priority, timeToLive设置生效--> 26 <property name="explicitQosEnabled" value="true" /> 27 <!-- 设置NON_PERSISTENT模式, 默认为PERSISTENT --> 28 <property name="deliveryPersistent" value="true" /> 29 <!-- 设置优先级, 默认为4 --> 30 <property name="priority" value="9" /> 31 </bean> 32 33 <!-- 异步接收Queue消息Container --> 34 <bean id="advancedQueueContainer" depends-on="jmsService" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 35 <property name="connectionFactory" ref="advancedConnectionFactory" /> 36 <property name="destination" ref="notifyQueue" /> 37 <property name="messageListener" ref="jmsService" /> 38 <!-- 初始5个Consumer, 可动态扩展到10 --> 39 <property name="concurrentConsumers" value="1" /> 40 <property name="maxConcurrentConsumers" value="1" /> 41 <!-- 设置消息确认模式为Client --> 42 <property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE" /> 43 </bean>

jms sender 

1@Autowired 2 private JmsTemplate jmsTemplate; 3 @Autowired 4 private Destination dest; 5 6 public void send(final Serializable obj) { 7 jmsTemplate.send(dest, new MessageCreator() { 8 @Override 9 public Message createMessage(Session session) throws JMSException { 10 ObjectMessage msg = session.createObjectMessage(obj); 11 return msg; 12 } 13 }); 14 }

jms receiver

1@Override 2 public void onMessage(Message message) { 3 if (message instanceof ObjectMessage) { 4 ObjectMessage om = (ObjectMessage) message; 5 try { 6 System.out.println(om.getObject().toString() + " recieved"); 7 Thread.currentThread().sleep(1000); 8 System.out.println(om.getObject().toString() + " process over"); 9 } catch (InterruptedException ex) { 10 } catch (JMSException ex) { 11 } 12 } 13 }

Main

1public static void main(String[] args) { 2 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 3 JmsSender sender = ctx.getBean(JmsSender.class); 4 for (int i = 0; i < 100; i++) { 5 System.out.println("message " + i + "send"); 6 sender.send("message" + i); 7 } 8 }

这里将 concurrentConsumers 调为 1, 这就是单任务队列

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )