`

IBM MQ7 上的PUB/SUB

    博客分类:
  • MQ
 
阅读更多

现在服务器上装好IBM MQ V7 ,建立队列管理器QM1  并监听在1414端口。

PUB程序:

package com.jn.test;

import javax.jms.Session;
import javax.jms.TextMessage;


import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQTopic;
import com.ibm.mq.jms.MQTopicConnection;
import com.ibm.mq.jms.MQTopicConnectionFactory;
import com.ibm.mq.jms.MQTopicPublisher;
import com.ibm.mq.jms.MQTopicSession;

public class MQPublisher {

 public static void main(String[] args) {
  try {
   MQTopicConnectionFactory tcf = new MQTopicConnectionFactory();
   
   tcf.setQueueManager("QM1");
   tcf.setBrokerQueueManager("QM1");
   tcf.setHostName("9.186.102.180");
   tcf.setPort(1414);
   tcf.setChannel("SYSTEM.DEF.SVRCONN");
   
   
   tcf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
   tcf.setBrokerVersion(JMSC.MQJMS_BROKER_V1);
   tcf.setBrokerPubQueue("SYSTEM.BROKER.DEFAULT.STREAM");
   tcf.setCCSID(1208);

   MQTopicConnection tConn = (MQTopicConnection) tcf.createTopicConnection();
   MQTopicSession topicSession = (MQTopicSession) tConn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
   MQTopic topic = (MQTopic) topicSession.createTopic("SampleTopic");

   MQTopicSession pubSession = (MQTopicSession) tConn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
   MQTopicPublisher publisher = (MQTopicPublisher) pubSession.createPublisher(topic);

   TextMessage message = pubSession.createTextMessage();
   message.setText("This is a message ...");
   publisher.publish(message);

  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}

SUB程序

package com.jn.test;

 

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import javax.jms.TopicSubscriber;


import com.ibm.mq.*;
import com.ibm.mq.jms.*;


public class MQBrokerSub implements MessageListener {

 
 private MQTopicConnection connection;
 private MQTopicSession session;
 private MQTopicSubscriber subscriber;
 
 private void disconnect() throws JMSException {
  subscriber.close();
  session.close();
  connection.stop();
  connection.close();
  System.out.println("Subscriber stopped.");
 }
 
 private void connect() throws JMSException {
  
  MQTopicConnectionFactory tcf = new MQTopicConnectionFactory();  

        
  tcf.setQueueManager("QM1");
  tcf.setBrokerQueueManager("QM1");
  tcf.setHostName("9.186.102.180");
  tcf.setPort(1414);
  tcf.setChannel("SYSTEM.DEF.SVRCONN");
  tcf.setCCSID(1208);
       
  
  tcf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
  tcf.setBrokerVersion(JMSC.MQJMS_BROKER_V1);
  
       
        System.out.println("1");
        connection = (MQTopicConnection) tcf.createTopicConnection();
        System.out.println("2");
        session = (MQTopicSession)connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
        System.out.println("3");
        Topic topic = (Topic)session.createTopic("SampleTopic");    //scribble/coords
        System.out.println("4");
        subscriber = (MQTopicSubscriber)session.createSubscriber(topic);
        System.out.println("5");
        subscriber.setMessageListener(this);
        System.out.println("6");
        connection.start();
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  MQBrokerSub mqBS = new MQBrokerSub();
  try {
   mqBS.connect();
   System.in.read();
   
   mqBS.disconnect();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public void onMessage(Message message) {
  // TODO Auto-generated method stub
  try {
   TextMessage tMessage = (TextMessage) message;
   String text;
   text = tMessage.getText();
   System.out.println(
    "Received message <"
     + new String(text.getBytes("ISO-8859-1"),"GBK")  //ISO 8859-1 GB18030
     + "> with ID <"
     + message.getJMSMessageID()
     + ">");
  } catch (JMSException e) {
   e.printStackTrace();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
 }

}

 

 

先运行sub程序 再运行pub程序 就可以看到效果了。

分享到:
评论

相关推荐

    MQ7.0 pub/sub功能初步研究

    MQ7.0是IBM消息队列(Message Queue)的一个重要版本,相较于MQ6.1,它引入了许多新特性和改进,特别是在发布/订阅(pub/sub)功能方面。发布/订阅是一种异步消息传输机制,允许应用程序(发布者)在不关心具体接收...

    WS_MQ_V7.5.0.2_TRIAL_FOR_WINDOWS_ML.rar

    1. **安装程序**:WS_MQ_V7.5.0.2_TRIAL_FOR_WINDOWS_ML.rar这个压缩包包含了IBM MQ v7.5.0.2在Windows上的安装程序。安装过程中,你需要遵循一系列步骤,包括接受许可协议、选择安装类型(如客户机、服务器或开发...

    Websphere+MQ入门教程7

    WebSphere MQ,原名MQSeries,是IBM开发的一种企业级的消息传递系统,它允许应用程序之间通过网络进行可靠的信息交换,无论这些程序运行在何种操作系统上。本教程将深入浅出地介绍这一核心概念。 首先,WebSphere ...

    WebSphere_MQ_V6.0.zip

    4. **消息模型**:包括点对点(P2P)和发布/订阅(Pub/Sub)两种,前者基于队列,后者基于主题。 5. **安全性**:通过用户标识、访问控制列表(ACLs)和认证机制确保消息的安全传输。 **WebSphere MQ V6.0的主要...

    jms-spring3-ibmmq:JMS 1.0.2 与 Spring 3.2.x 和 IBM MQ

    本项目"jms-spring3-ibmmq"是关于如何在Spring 3.2.x框架下集成JMS 1.0.2版本和IBM MQ的一个实例教程。 1. **JMS 1.0.2 知识点**: - JMS 是Java平台用于企业级应用间消息传递的API,支持点对点(Point-to-Point,...

    IBMMQjar包

    - **发布/订阅(Pub/Sub)**:消息发布到一个主题,多个订阅者可以接收到这些消息,适用于广播通知。 8. **性能优化**: - 使用批处理(batching)发送大量消息,减少网络开销。 - 选择合适的队列深度和缓存策略...

    WebSphere MQ开发JMS

    它提供了两种消息传递模式:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。点对点模式基于队列,而发布/订阅模式基于主题。JMS 1.1统一了这两种模式,使得开发者可以更灵活地选择消息...

    精通 WebSphere MQ.pdf

    WebSphere MQ支持两种主要的消息传递模式:点对点(PTP)和发布/订阅(Pub/Sub)。PTP模式下,每个消息只有一个接收者;Pub/Sub模式允许多个订阅者接收同一消息。 #### 3.2 协同工作 WebSphere MQ中的队列管理器...

    MQ客户端消息发送接收程序

    - 发布/订阅模型(Pub/Sub):一个消息可以被多个消费者消费,适合一对多广播。 4. **消息确认机制**: - 确认(ACK):确保消息已被正确处理,防止丢失或重复。 - 模式如:自动ACK、手动ACK等。 5. **事务支持...

    MQ考试教程(英文)

    4. **消息模型**:MQ支持多种消息模型,包括点对点(P2P)和发布/订阅(Pub/Sub)。P2P模型中,一个消息被一个消费者接收;而在Pub/Sub模型中,一个消息可以被多个订阅者接收。 5. **消息格式**:MQ支持多种消息...

    MQ的一些资料

    7. **MQ工具**:管理和监控MQ的工具,如IBM MQ Explorer、RabbitMQ Management Console等,可以帮助开发者调试、监控队列状态、查看消息流转等。 8. **适配器(sapadepter)**:适配器是连接不同系统的关键,...

    MQ介绍与编程

    1. **消息模型**:MQ支持多种消息模型,如点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。P2P模型中,每个消息只有一个消费者,而Pub/Sub模型允许多个消费者订阅同一主题,实现广播式...

    websphereMQ.ppt

    【标题】:“WebSphere MQ”是IBM开发的一种高级消息队列协议和软件产品,它允许应用程序之间通过网络发送和接收消息。在企业级系统集成和分布式计算环境中,WebSphere MQ扮演着关键角色,确保数据传输的可靠性和...

    MQ中间件学习

    MQ中间件的核心特点是提供了可靠的、基于消息队列的消息传递服务,支持多种消息传输模式,包括点对点(P2P)和发布/订阅(Pub/Sub)模式。 #### 三、MQ中间件的关键特性 1. **可靠性**:MQ中间件能够确保消息的安全...

    IBM WMQ 培训教材

    IBM WebSphere MQ(简称WMQ或MQ)是IBM公司推出的一种中间件,它提供了一种可靠、高效且灵活的消息传递机制。WMQ允许应用程序在不同的操作系统、网络协议和应用程序之间交换消息,无论这些应用程序是否同时运行。在...

    基于WebSphere MQ发送消息的简单JMS实例

    JMS提供了两种主要的消息模型:点对点(Point-to-Point, P2P)和发布/订阅(Publish/Subscribe, Pub/Sub)。 在WebSphere MQ中,我们可以通过以下步骤创建一个简单的JMS发送消息的实例: 1. **配置WebSphere MQ**...

    基于soap over jms 的websphere mq与axis2的实现

    JMS支持两种消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 **Websphere MQ** IBM Websphere MQ,通常简称为MQ,是一个功能强大的消息中间件,它允许不同系统之间的应用程序...

    MQ 自己做的小系统

    JMS是Java平台上的标准接口,用于访问消息队列,它提供了两种主要的消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 点对点模型中,消息从一个生产者发送到一个队列,然后由...

    mule集成mq

    JMS提供两种消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 MQ(例如IBM WebSphere MQ)是实现JMS的一种具体实现,它是一个高性能、可靠的跨平台消息传递系统。MQ允许在不同...

Global site tag (gtag.js) - Google Analytics