浏览 2086 次
锁定老帖子 主题:jms 初步涉及
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-04
最后修改:2010-03-04
消息中间件一般有两种传递模型:点对点模型(PTP)和发布-订阅模型(Pub/Sub)。 1. 点对点模型(PTP) 点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发动到由某个名字标识的特定消费者。这个名字实际上对应于消息服务中的一个队列(Queue),在消息传动给消费者之前它被存储在这个队列中。队列可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。
P2P模式的测试
在jboss中部署下面的 消息驱动bean
import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; //默认是无状态的session bean @MessageDriven( activationConfig={ @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue" ), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/myqueue") } ) public class QueueMessageBean implements MessageListener { //1.Text //2.Map //3.Object //4.steam //5.byte public void onMessage(Message msg) { TextMessage txtMsg=(TextMessage)msg; String s=""; try { s = txtMsg.getText(); } catch (JMSException e) { e.printStackTrace(); } System.out.println("QueueMessageBean接收到了消息:"+s); } }
客户端的测试类
import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSession; import javax.naming.InitialContext; import javax.naming.NamingException; public class Test { public static void main(String[] args) throws NamingException, JMSException { InitialContext context; context = new InitialContext(); //获得QueueConnectionFactory QueueConnectionFactory factory =(QueueConnectionFactory)context.lookup("QueueConnectionFactory"); //创建QueueConnection QueueConnection conn=factory.createQueueConnection(); //创建会话 //p1:与事务有关 true:表示最后提交 false:表示自动提交 //p2:表示接收方向消息中间件发送确认通知,我们这里采用自动通知类型 QueueSession session=conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); //取得destination Queue queue=(Queue)context.lookup("queue/myqueue"); //消息生产者 MessageProducer sender=session.createProducer(queue); //定义消息 Message msg=session.createTextMessage("消息来了"); //发送消息 sender.send(queue, msg); session.close(); conn.close(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |