企业JavaBeans组件和Web组件之类的应用程序客户端可以同步发送或接收JMS消息。如何工作呢?
一步:配置message-service.xml文件内容如下:然后发布到Jboss中
queue/liyong.com jboss.mq:service=DestinationManager 第二步:编译和发布message-service.xml拷贝到*\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy 第三步:编写EJB Bean发送消息 public static void main(String[] args) { try { InitialContext initialContext=new InitialContext(); QueueConnectionFactory factory = (QueueConnectionFactory)initialContext.lookup("QueueConnectionFactory"); Connection con=factory.createConnection(); //第一个参数:是否建立事务 //第二个参数:表示消息确认模式 Session session=con.createSession(false,QueueSession.AUTO_ACKNOWLEDGE); //查找目标地址 Destination destination = (Destination )initialContext.lookup("queue/liyong.com"); //创建发送消息 MessageProducer producer = session.createProducer(destination); TextMessage msg = session.createTextMessage("您好,这是我的第一个消息驱动QueueBean"); producer.send(msg); //关闭相应资源 producer.close(); session.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } 第四步:编写接受端代码:采用消息驱动Bean (Message Driven Bean)接收消息 @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"), @ActivationConfigProperty(propertyName="destination", propertyValue="queue/liyong.com"), @ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge") }) public class MessageDriverBeanQuee implements MessageListener{ //第一步:注册这个消息驱动监听位置 //第二步:接受消息 //第三步:发布到服务器 @Override public void onMessage(Message message) { TextMessage textMessage=(TextMessage)message; try { System.out.println(textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } } 第五步:发布EJB Topic: 准备工作:如上 第一步: 配置目标地址文件 queue/liyong.com jboss.mq:service=DestinationManager ------------------------------------------------------------ topic/liyong.com jboss.mq:service=DestinationManager 第二步:编译和发布message-service.xml拷贝到*\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy 第三步:编写EJB Bean发送消息 public static void main(String[] args) { try { InitialContext initialContext=new InitialContext(); TopicConnectionFactory factory = (TopicConnectionFactory)initialContext.lookup("TopicConnectionFactory"); Connection con=factory.createConnection(); //第一个参数:是否建立事务 //第二个参数:表示消息确认模式 Session session=con.createSession(false,TopicSession.AUTO_ACKNOWLEDGE); //查找目标地址 Destination destination = (Destination )initialContext.lookup("topic/liyong.com"); //创建发送消息 MessageProducer producer = session.createProducer(destination); TextMessage msg = session.createTextMessage("您好,这是我的第一个消息驱动TopicBean"); producer.send(msg); //关闭相应资源 producer.close(); session.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } 第四步:编写接受端代码:采用消息驱动Bean (Message Driven Bean)接收消息 这里我编写了两个Topic来接受消息 <1、 @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"), @ActivationConfigProperty(propertyName="destination", propertyValue="topic/liyong.com"), @ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge") }) public class MessageDriverBeanTopic1 implements MessageListener{ @Override public void onMessage(Message message) { TextMessage textMessage=(TextMessage)message; try { System.out.println("MessageDriverBeanTopic1="+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } <2、 @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"), @ActivationConfigProperty(propertyName="destination", propertyValue="topic/liyong.com"), @ActivationConfigProperty(propertyName="acknowledgeMode", propertyValue="Auto-acknowledge") }) public class MessageDriverBeanTopic2 implements MessageListener{ @Override public void onMessage(Message message) { TextMessage textMessage=(TextMessage)message; try { System.out.println("MessageDriverBeanTopic2="+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } 第五步:发布EJB 大功告成....用程序客户端可以异步接收消息。借助消息驱动的Bean,JMS提供程序可以选择实现消息的处理。消息驱动Bean是一种企业Bean,它支持异步使用消息。 发送和接收消息的操作是在分布式操作中执行的,它允许在单个事务中进行JMS操作和数据库访问
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。