activemq+spring简单记录
来源:互联网 发布:牵机药 知乎 编辑:程序博客网 时间:2024/06/15 10:56
1,activeMq连接池
<bean id="jmsConnectionFacotry" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop" init-method="start">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="failover:(tcp://10.0.0.161:61616)?randomize=false"></property>
<property name="sendTimeout" value="100000"></property>
</bean>
</property>
</bean>
定义队列目的名称配置
<bean id="destinationQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="test_1_queue"></constructor-arg>
</bean>
定义处理接受的消息配置
<bean id="queueMessageListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.lyl.com.activeMqSpringTest.JmsMessageListenerImpl"></bean><!-- 消息处理业务 -->
</constructor-arg>
<property name="defaultListenerMethod" value="onMessage" /><!-- 消息业务处理的方法 -->
<property name="messageConverter">
<null />
</property>
</bean>
定义spring监听配置
<bean id="springListenerQueueContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFacotry" /> <!-- spring容器去哪里监听 -->
<property name="destination" ref="destinationQueue" /><!-- spring容器监听消息的目的地 -->
<property name="messageListener" ref="queueMessageListener" /> <!-- spring监听到消息交给谁去处理 -->
<property name="concurrentConsumers" value="5" /><!-- -->
</bean>
--------------------java 接受queue例子
package com.lyl.com.activeMqSpringTest;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class JmsMessageListenerImpl implements MessageListener {
@Override
public void onMessage(Message paramMessage) {
//
TextMessage textMessage = null;
String megContextString="";
if(paramMessage!=null && paramMessage instanceof TextMessage){
textMessage = (TextMessage) paramMessage;
try {
String typeString = textMessage.getStringProperty("dddd");//得到消息属性列表
megContextString = textMessage.getText();
System.out.println("JmsMessageListenerImpl:"+megContextString);
} catch (JMSException e) {
e.printStackTrace();
}
}
System.out.println("监听完");
}
}
--------------------发送队列消息配置例子--------------------------------
使用JmsTemplate
<!-- jmsTemplate -->
<bean id="sendTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFacotry"></property>
<property name="defaultDestination" ref="destinationQueue"></property>
<!-- Needs to be true for the deliveryMode to work -->
<property name="explicitQosEnabled" value="true" />
<!-- Value = javax.jms.DeliveryMode.PERSISTENT -->
<property name="deliveryMode" value="2" />
</bean>
<!-- 发送消息 业务 -->
<bean id="jsmSender"
class="com.lyl.com.activeMqSpringTest.JmsMessageQueueSenderImpl">
<property name="sendTemplate" ref="sendTemplate"></property>
<property name="destination" ref="destinationQueue"></property>
</bean>
-----Java发送queue消息
public class JmsMessageQueueSenderImpl {
private JmsTemplate sendTemplate;
private static String stringPropertyNameString = "dddd";
public JmsTemplate getSendTemplate() {
return sendTemplate;
}
public void setSendTemplate(JmsTemplate sendTemplate) {
this.sendTemplate = sendTemplate;
}
public void sendMessage(final String msg, final String propertyName) {
MessageCreator contentCreator = new MessageCreator() {
@Override
public Message createMessage(Session paramSession) throws JMSException {
TextMessage txt = paramSession.createTextMessage(msg);
txt.setStringProperty(stringPropertyNameString, propertyName);
return txt;
}
};
sendTemplate.send(contentCreator);
}
}
-------------------接受消息回复的queue例子 (接受到消息后 指定回复已收到消息目的地)
<bean id="destinationQueue2" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="test_22_queue"></constructor-arg>
</bean>
<bean id="queueMessageListener2" class="com.lyl.com.activeMqSpringTest.JmsMessageListener2">
<property name="destination" ref="destinationQueue2"></property><!-- 接收到消息后 发送回复消息目的地 -->
</bean>
<!-- spring消息监听 -->
<bean id="springListenerQueueContainer2"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFacotry" /> <!-- spring容器去哪里监听 -->
<property name="destination" ref="destinationQueue" /><!-- spring容器监听消息的目的地 -->
<property name="messageListener" ref="queueMessageListener2" /> <!-- spring监听到消息交给谁去处理 -->
<property name="concurrentConsumers" value="5" /><!-- -->
</bean>
-----------java
package com.lyl.com.activeMqSpringTest;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.jms.listener.SessionAwareMessageListener;
public class JmsMessageListener2 implements SessionAwareMessageListener<TextMessage> {
private Destination destination;
public Destination getDestination() {
return destination;
}
public void setDestination(Destination destination) {
this.destination = destination;
}
@Override
public void onMessage(TextMessage paramM, Session paramSession) throws JMSException {
System.out.println("JmsMessageListener2收到的消息:" + paramM.getText());
MessageProducer producer = paramSession.createProducer(destination);
TextMessage message = paramSession.createTextMessage("发送已接受到消息回复");
producer.send(message);
}
}
---------------------------------订阅主题接受消息例子
<!-- 订阅目的地 -->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTempTopic">
<constructor-arg value="test_3_topic"></constructor-arg>
</bean>
<!-- 订阅业务处理 -->
<bean id="topicMessageListener" class="com.lyl.com.activeMqSpringTest.JmsTopicMessageListener"></bean>
<!-- spring 容器监听 -->
<bean id="springListenerTopicContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFacotry" /> <!-- spring容器去哪里监听 -->
<property name="destination" ref="topicDestination" /> <!-- spring容器监听消息的目的地 -->
<property name="messageListener" ref="topicMessageListener" /> <!-- spring监听到消息交给谁去处理 -->
<property name="pubSubDomain" value="true" /> <!-- 一定得设置 才会是订阅者模式 -->
<property name="concurrentConsumers" value="5" />
</bean>
--------------Java
package com.lyl.com.activeMqSpringTest;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class JmsTopicMessageListener implements MessageListener {
@Override
public void onMessage(Message paramMessage) {
String msgContextString ="";
TextMessage message=null;
if(paramMessage !=null && paramMessage instanceof TextMessage){
message = (TextMessage) paramMessage;
try {
String proString = message.getStringProperty("dddd");
System.out.println("proString:"+proString);
msgContextString = message.getText();
System.out.println("msgContextString:"+msgContextString);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
--------------------------订阅主题发送消息
<!-- 发送topic 消息 -->
<bean id="sendTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFacotry" />
<property name="defaultDestination" ref="topicDestination" />
<!-- <property name="defaultDestination" value="test_3_topic" /> -->
<!-- Needs to be true for the deliveryMode to work -->
<property name="explicitQosEnabled" value="true" />
<!-- Value = javax.jms.DeliveryMode.PERSISTENT 消息做持久化 -->
<property name="deliveryMode" value="2" />
<property name="receiveTimeout" value="10000" />
<property name="timeToLive" value="86400000" />
<property name="pubSubDomain" value="true" />
<property name="pubSubNoLocal" value="false" />
</bean>
<!-- 发送消息 业务 -->
<bean id="jsmSenderTopic"
class="com.lyl.com.activeMqSpringTest.JmsMessageTopicSenderImpl">
<property name="sendTemplate" ref="sendTopicTemplate"></property>
</bean>
----------------------Java
package com.lyl.com.activeMqSpringTest;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class JmsMessageTopicSenderImpl {
private JmsTemplate sendTemplate;
public JmsTemplate getSendTemplate() {
return sendTemplate;
}
public void setSendTemplate(JmsTemplate sendTemplate) {
this.sendTemplate = sendTemplate;
}
public void sendTopicMessage(final String content, final String propertyName) {
MessageCreator messageCreator = new MessageCreator() {
@Override
public Message createMessage(Session paramSession) throws JMSException {
TextMessage txt = null;
txt = paramSession.createTextMessage(content);
txt.setStringProperty("dddd", propertyName);
return txt;
}
};
sendTemplate.send(messageCreator);
}
}
-------------------------------------------------------------------
安装activeMq
启动activeMq
进入目录 /usr/local/apache-activemq-5.5.0/bin
./activemq start
activeMq后台控制页面账号在/usr/local/apache-activemq-5.5.0/conf/jetty-realm.properties
- activemq+spring简单记录
- activeMQ+spring+tomcat简单配置
- Spring+Log4j+ActiveMQ实现远程记录日志
- Spring+Log4j+ActiveMQ实现远程记录日志
- activeMQ,spring的jmstemplate简单例子
- activeMQ,spring的jmstemplate简单例子
- activeMQ,spring的jmstemplate简单例子
- activeMQ,spring的jmstemplate简单例子
- activeMQ,spring的jmstemplate简单例子
- Maven的ActiveMQ+spring的简单使用
- ActiveMQ简单使用(二):整合Spring
- activeMQ,spring的jmstemplate简单例子
- spring aop简单记录
- spring-activemq
- Spring ActiveMQ
- Spring ActiveMQ
- Spring + activemq
- Spring ActiveMQ
- 合并表记录
- 仿QQ左滑打开或删除
- NOIP模拟题 期望DP 礼物
- java内部类详载
- MATLAB图形句柄
- activemq+spring简单记录
- CSS3 做一个有闪光效果的进度条
- mysql深入一
- python编程快速上手-第六章实践项目解答
- virtualbox安装oracle linux后找不到eth0
- Mybatis源码详解之接口方法被执行流程源码解析
- C语言编程基本规范
- Maven私服
- hdu 1232 畅通工程