以JMS标准接口访问IBM MQ

阅读更多

  IBM MQ是广泛应用的消息中间件,如果实际项目中消息中间件只有IBM MQ,那么可以用IBM MQ提供的包来访问。如果想让客户端代码通用,支持所有JMS标准的MQ,就需要以JMS标准方式访问。参考这个帖子,

关键是如何获得连接MQ的java.jms.Connection。对于IBM MQ不能以传入url的方式获得Connection,只能以JNDI查找的方式获得Connection。

 

 

  public static final String     icf     = "com.sun.jndi.fscontext.RefFSContextFactory";

static              String     url         = "file:C:/IBM MQ/";

//下面代码通过jndi lookup获得connection
      Hashtable environment = new Hashtable();
      environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
      environment.put(Context.PROVIDER_URL, url);
      ctx = new InitialDirContext( environment );

      connFactory = (ConnectionFactory)ctx.lookup( cfLookup );
      connection = connFactory.createConnection();
      connection.start();

//下面就是纯粹JMS的代码了
     Session session = connection.createSession(false, Session.ATUO_ACKNOWLEDGE);
     Queuq queuq = session.createQueue("queue1");
     MessageProducer producer = session.createProducer(queue);
     
        TextMessage outMessage = session.createTextMessage();
        outMessage.setText("outString");
        myProducer.send(outMessage);

 

 

使用JNDI查找方式需要在MQ中做配置。在JMS受管理对象中建立初始上下文,jndi名称空间选择文件系统,类型是com.sun.jndi.fscontext.RefFSContextFactory。


以JMS标准接口访问IBM MQ_第1张图片
 

然后在初始上下文中建立连接工厂。注意传输类型,如果选择绑定,意味着MQ与客户端程序在同一机器上,连接时不需要认证;如果选择MQ 客户机。那么连接的时候需要认证。建立连接工厂的最后一步需要制定连接,要选择一个队列管理器,这样通过连接工厂就可以连接到队列管理器了。

 
以JMS标准接口访问IBM MQ_第2张图片
 

 

  • 以JMS标准接口访问IBM MQ_第3张图片
  • 大小: 101.5 KB
  • 以JMS标准接口访问IBM MQ_第4张图片
  • 大小: 179.2 KB
  • 查看图片附件

你可能感兴趣的:(MQ,jms)