java message send
转自百度百科:JMS
jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。
简介
JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于 JDBC(Java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,这只是几个例子。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象, 由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以 将消息分为几种类型,它们分别携带:简单文本 (TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。
体系架构
JMS对象模型
JMS对象模型包含如下几个要素:
1)连接工厂。连接工厂(ConnectionFactory)是由管理员创建,并绑定到JNDI树中。客户端使用JNDI查找连接工厂,然后利用连接工厂创建一个JMS连接。
2)JMS连接。JMS连接(Connection)表示JMS客户端和服务器端之间的一个活动的连接,是由客户端通过调用连接工厂的方法建立的。
3)JMS会话。JMS会话(Session)表示JMS客户与JMS服务器之间的会话状态。JMS会话建立在JMS连接上,表示客户与服务器之间的一个会话线程。
4)JMS目的。JMS目的(Destination),又称为消息队列,是实际的消息源。
5)JMS生产者和消费者。生产者(Message Producer)和消费者(Message Consumer)对象由Session对象创建,用于发送和接收消息。
6)JMS消息通常有两种类型: ① 点对点(Point-to-Point)。在点对点的消息系统中,消息分发给一个单独的使用者。点对点消息往往与队列(javax.jms.Queue)相关联。 ② 发布/订阅(Publish/Subscribe)。发布/订阅消息系统支持一个事件驱动模型,消息生产者和消费者都参与消息的传递。生产者发布事件,而使用者订阅感兴趣的事件,并使用事件。该类型消息一般与特定的主题(javax.jms.Topic)关联。
定义connection bean
<bean id="connectionFactory" //it knows how to connect to ActiveMQ(message broker)
class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<propertyname="brokerURL"value="tcp://localhost:61616"/> //where the message broker
is located,jms消息提供者的地址
</bean>
定义消息队列
<bean id="queue"class="org.apache.activemq.command.ActiveMQQueue">
<constructor-argvalue="spitter.queue"/>
</bean>
或者
<bean id="topic"class="org.apache.activemq.command.ActiveMQTopic">
<constructor-argvalue="spitter.topic"/>
</bean>
//send message
ConnectionFactorycf=new ActiveMQConnectionFactory("tcp://localhost:61616");
Connectionconn=null;
Session session=null;
try {
conn =cf.createConnection();//创建连接
session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE); //创建session
Destinationdestination=new ActiveMQQueue("spitter.queue"); //消息队列
MessageProducerproducer=session.createProducer(destination); //创建生产者
TextMessagemessage=session.createTextMessage(); //创建消息
message.setText("Helloworld!");
producer.send(message); //发布
} catch(JMSExceptione){
// handleexception?
} finally{
try {
if (session!=null){
session.close();
}
if (conn!=null){
conn.close();
}
} catch(JMSExceptionex){
}
}
//receive message
ConnectionFactorycf=new ActiveMQConnectionFactory("tcp://localhost:61616");
Connectionconn=null;
Session session=null;
try {
conn =cf.createConnection();
conn.start();
session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destinationdestination=new ActiveMQQueue("spitter.queue");
MessageConsumerconsumer=session.createConsumer(destination);
Messagemessage=consumer.receive();
TextMessagetextMessage=(TextMessage)message;
System.out.println("GOTAMESSAGE:"+textMessage.getText());
conn.start();
} catch(JMSExceptione){
// handleexception?
} finally{
try {
if (session!=null){
session.close();
}
if (conn!=null){
conn.close();
}
} catch(JMSExceptionex){
}
}
使用jmsTemplate可以简化以上步骤,处理异常
http://www.cnblogs.com/zengyou/archive/2012/12/04/data:image/png;base64,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
http://www.cnblogs.com/zengyou/archive/2012/12/04/data:image/png;base64,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
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<propertyname="connectionFactory"ref="connectionFactory"/>
<propertyname="defaultDestinationName"
value="spittle.alert.queue"/>
</bean>
//send message
public classAlertServiceImplimplementsAlertService{
public void sendSpittleAlert(finalSpittlespittle){
jmsTemplate.send(
"spittle.alert.queue", //发送到的消息队列,如果jsmTemplate有设置defaultDestinationName,则可以省略这个参数
new MessageCreator(){
public MessagecreateMessage(Sessionsession) throws JMSException{
return session.createObjectMessage(spittle); //ask for an object message from the session, giving it the Spittle object to build
the object message from.
}
}
);
}
@Autowired
JmsTemplatejmsTemplate;
}
//receive message
public SpittlegetAlert(){
try {
ObjectMessagereceivedMessage=(ObjectMessage) jmsTemplate.receive();//Receive message
return(Spittle)receivedMessage.getObject();//Get object
} catch(JMSExceptionjmsException){
throwJmsUtils.convertJmsAccessException(jmsException);
}
}
//唯一一处使用jmstemplate 需要处理异常,由于ObjectMessage’s getObject()抛出
//receive()是同步的
消息监听
<bean id="spittleHandler"
class="com.habuma.spitter.alerts.SpittleAlertHandler"/>
<jms:listener-containerconnection-factory="connectionFactory">
<jms:listenerdestination="spitter.alert.queue"
ref="spittleHandler"method="processSpittle"/>
</jms:listener-container>
public classSpittleAlertHandler{
public voidprocessSpittle(Spittlespittle){
// ...implementationgoeshere...
}
}
参考: http://blog.csdn.net/kkdelta/article/details/5604218
http://uh.9ria.com/space-63908-do-blog-id-7075.html 详解
http://wenku.baidu.com/view/f8af7923ccbff121dd368314.html技术原理
页:
[1]