ejb3学习笔记5
开发消息驱动bean
1定义消息驱动bean 服务
定义queue 和topic 消息驱动bean。
?
- <?xml?version="1.0"?encoding="UTF-8"?>??<server>??
- ????<mbean?code="org.jboss.mq.server.jmx.Queue"?? ?????????????????name="jboss.mq.destination:service=Queue,name=itcastQueue">??
- ?????<attribute?name="JNDIName">queue/itcastQueue</attribute>?? ?????<depends?optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>??
- ??</mbean>????<mbean?code="org.jboss.mq.server.jmx.Topic"??
- ?????????????????name="jboss.mq.destination:service=Topic,name=itcastTopic">?? ?????<attribute?name="JNDIName">topic/itcastTopic</attribute>??
- ?????<depends?optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>?? ??</mbean>??
- </server>??
??
?
?
2 向bean 发送消息
?
- InitialContext?ctx?=?new?InitialContext();??QueueConnectionFactory?factory?=?(QueueConnectionFactory)ctx.lookup("QueueConnectionFactory");??
- QueueConnection?conn?=?factory.createQueueConnection();??QueueSession?session?=?conn.createQueueSession(false,?QueueSession.AUTO_ACKNOWLEDGE);//事物?消息确认模式? ??
- Destination?destination?=?(Destination)ctx.lookup("queue/itcastQueue");?? MessageProducer?producer?=?session.createProducer(destination);??
- producer.send(session.createTextMessage("你好"));?? session.close();??
- conn.close();??
?
?
topic消息 只需要将Queue改成Topic 即可
?
3 从bean中接受消息
??
?
- @MessageDriven(activationConfig={??????@ActivationConfigProperty(propertyName="destinationType",?propertyValue="javax.jms.Queue"),??
- ????@ActivationConfigProperty(propertyName="destination",?propertyValue="queue/itcastQueue")?????????? })??
- public?class?MessageDrivenBean?implements?MessageListener{?? ??
- ????public?void?onMessage(Message?message)?{?? ????????try?{??
- ????????????TextMessage?msg?=?(TextMessage)message;??????????????System.out.println(msg.getText());??
- ????????}?catch?(JMSException?e)?{?? ????????????e.printStackTrace();??
- ????????}??????}??
- }??
?
?
?
4 消息:
消息,由消息头和消息正文组成
JMS的异步性:JMS生产者发送消息后,无需阻塞进程,不需要管谁是消费者。
JMS消息传递模型:JMS Provider提供两种消息传递模型,及发布-订阅模型(Pub/Sub)和点对点模型(PtP)。
StreamMessage
MapMessage
TextMessage
ObjectMessage
BytesMessage