1.依赖jar包
spring.jar
activeMQ-all-5.8.0.jar
2.配置文件
<!--创建连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://127.0.0.1:61616"></property>
<property name="useAsyncSend">
<value>TRUE</value>
</property>
<property name="optimizeAcknowledge">
<value>TRUE</value>
</property>
</bean>
<!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="my-mq"></constructor-arg>
</bean>
<bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="mmm" />
</bean>
<!---->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="defaultDestination" ref="destination"></property>
<property name="receiveTimeout" value="6000"></property>
<property name="messageConverter" >
<bean class="com.MyConverter" ></bean>
</property>
<property name="deliveryMode" value="2" />
<property name="sessionAcknowledgeMode" value="1" />
</bean>
<bean id="jmsMessageConverter" class="com.MyConverter"></bean>
<bean id="jmsReceiver" class="com.Receiver">
<property name="jmsTemplate" ref="jmsTemplate"></property>
<property name="destination" ref="destination"></property>
</bean>
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="jmsReceiver" />
<property name="pubSubNoLocal" value="false"></property>
</bean>
MyConverter
public class MyConverter implements MessageConverter {
@Override
public Object fromMessage(Message message) throws JMSException,
MessageConversionException {
return ((ObjectMessage) message).getObject();
}
@Override
public Message toMessage(Object obj, Session session) throws JMSException,
MessageConversionException {
ObjectMessage message = session.createObjectMessage();
message.setObject((Serializable) obj);
return message;
}
}
消息发送
public class Sender {
@Resource
private JmsTemplate jmsTemplate;
public void pushMsg(Entity entity) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("method", "mq-push");
params.put("sessionId", sessionId);
params.put("pushObject", entity);
// send mq
jmsTemplate.convertAndSend(params);
}
}
消息接收:com.Receiver
public class Receiver implements MessageListener{
@Override
public void onMessage(Message message) {
log.debug(">>>>>>>>>>>>into receive ");
ObjectMessage convertmessage = (ObjectMessage)message;
try {
Map<String, Object> params = (Map<String, Object>)convertmessage.getObject();
if(params.get("method").equals("mq-push-common")) {
String sessionId=params.get("ioSessionId") ;
Entity entity=(Entity)(params.get("pushObject"));
}
} catch (JMSException e) {
e.printStackTrace();
log.debug(e.toString());
}
}
}