以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。



 

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

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值