首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

jms 初始涉及

2012-07-24 
jms 初步涉及消息中间件一般有两种传递模型:点对点模型(PTP)和发布-订阅模型(Pub/Sub)。  1. 点对点模型(PT

jms 初步涉及

消息中间件一般有两种传递模型:点对点模型(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.bytepublic 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();//获得QueueConnectionFactoryQueueConnectionFactory factory =(QueueConnectionFactory)context.lookup("QueueConnectionFactory");//创建QueueConnectionQueueConnection conn=factory.createQueueConnection();//创建会话//p1:与事务有关 true:表示最后提交  false:表示自动提交//p2:表示接收方向消息中间件发送确认通知,我们这里采用自动通知类型QueueSession session=conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);//取得destinationQueue queue=(Queue)context.lookup("queue/myqueue");//消息生产者MessageProducer sender=session.createProducer(queue);//定义消息Message msg=session.createTextMessage("消息来了");//发送消息sender.send(queue, msg);session.close();conn.close(); }}

?

?

热点排行