JMS简介
来源:互联网 发布:java 线程池 串行 编辑:程序博客网 时间:2024/06/15 19:48
在JMS中有两种的消息模式:
- 队列的点对点消息模式:既是每一个消息都有一个发送者有一个或者多个接收者,当消息代理得到消息时,它将消息放入一个队列中。当接收者请求队列中的下一条消息时,消息会从队列中取出投递给接收者。因为消息投递后会从队列中删除,这样就可以保证消息只能投递给一个接收者。这里的接收者谁会接收到消息是随机的。
- 发布-订阅消息模式:与队列类似,多个接收者都可以监听一个主题,但是这里消息不再是只投递给一个接收者,所有的接收者都会接受到消息。
创建链接工厂
<!-- 创建JMS链接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<!-- MQ地址 -->
<property name="brokerURL" value="tcp://192.168.1.24:61616"/>
</bean>
装配JMS模板:
<!-- spring的jms模板 设置消息发送的默认目的地 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- spring的jms模板 -->
<property name="connectionFactory" ref="connectionFactory"></property>
<!-- 设置消息发送的默认目的地 -->
<property name="defaultDestinationName" value="spittle.alert.queue"/>
<!-- 设置消息队列模式(队列和订阅模式) -->
<property name="pubSubDomain" value="false"/>
</bean>
注入jms模板:
<!-- 发送的bean -->
<bean id="send" class="F">
<property name="jmsTemplate" ref="jmsTemplate"/>
</bean>
<!-- 接收的bean -->
<bean id="receive1" class="J">
<property name="jmsTemplate" ref="jmsTemplate"/>
</bean>
</pre>
发送的类
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
/**
* Created by 胥源博 on 2016/7/27.
*/
public class F implements AlertService {
JmsTemplate jmsTemplate;//注入JMS模板
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
//JmsTemplate的send()方法调用时,JmsTemplate将负责获得JMS连接,会话并代表发送者发送消息。
public void sendSpilttleAlert(final UserBean userBean) {//发送消息
//第一个参数是JMS目的地的地名,标识消息发送给谁(这个参数不写就走xml文档里面配置的默认路径)
jmsTemplate.send(
"spittle.alert.queue",
new MessageCreator() {//创建消息
public Message createMessage(Session session) throws JMSException {
return session.createObjectMessage(userBean);
}
}
);
}
}
接受的类:
import org.springframework.jms.support.JmsUtils;
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
/**
* Created by 胥源博 on 2016/7/27.
*/
public class J {
JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public UserBean getF() {
try {
ObjectMessage objectMessage = (ObjectMessage) jmsTemplate.receive();//接收消息
return (UserBean) objectMessage.getObject();//获取对象
} catch (JMSException e) {
throw JmsUtils.convertJmsAccessException(e);
}
}
}
上述步骤:
- 创建JMS链接工厂(设置MQ地址)。
- 使用spring的JMS模版,注入链接工厂。消息的默认目的地,和模式(队列还是订阅)。
- 声明接收和发送的bean并注入JMS模板。
阅读全文
0 0
- 深入浅出JMS--JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- jms简介
- JMS简介
- JMS简介
- JMS简介
- JMS简介
- jms简介
- jms简介
- 数据库之-乐观锁与悲观锁
- 字符串与xml格式之间的转换
- [实用]Dev-c++中你所不知道的快捷键
- jsp和servlet
- equals与==,覆盖和重载,static,final基本规则
- JMS简介
- Angularjs过滤器笔记
- 链式A+B有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListN
- C语言关于字符串中字母大写换小写,小写换大写的实现程序
- 安装zsh后,终端mvn命令不能用问题解决
- 第十二章——SQLServer统计信息(1)——创建和更新统计信息
- jdbc中关于获取mysql数据库的链接
- 两台android设备间通过OTG-USB连接,实现通信(android设备间的通信)
- 叶明哲 | 数据中心空调那点事