论坛首页 入门技术论坛

jms 初步涉及

浏览 2086 次
精华帖 (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();


	 
	}

}

 

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics