2016-06-20 76 views
0

我正在使用IBM MQ Light。在IBM MQ Lite中推送消息时发生错误

我试图通过Java程序在IBM MQ Lite中推送消息,My Connection很好。当我运行该程序并检查本地主机时,它向我显示客户端已连接,但在3-4秒后断开连接,并在控制台引发异常。

以下是我的错误日志:

Problem with subscribe request: amqp:unauthorized-access: AMQXR0042E: A subscribe request was not authorized for channel PlainText received from 127.0.0.1. AMQXR0004E: MQSeries verb=SPISubscribe(String) returned cc=2(int) MQCC_FAILED rc=2035(int) MQRC_NOT_AUTHORIZED 
+0

哪个平台您使用的作品在我的情况,以及MQ版本光? –

回答

0

我有一个示例代码,通过它可以在IBM MQ精简版推送消息

package com.Queue; 
import com.ibm.mqlight.api.ClientOptions; 

import com.ibm.mqlight.api.Delivery; 
import com.ibm.mqlight.api.DestinationAdapter; 
import com.ibm.mqlight.api.NonBlockingClient; 
import com.ibm.mqlight.api.NonBlockingClientAdapter; 
import com.ibm.mqlight.api.StringDelivery; 


public class SendReceive2 
{ 
    public static void main(String[] cmdline) 
    { 
     ClientOptions clientOpts = ClientOptions.builder().setCredentials("ad", "jms123").build(); 



     NonBlockingClient.create("amqp://localhost", clientOpts, new NonBlockingClientAdapter<Void>() 
     { 

      public void onStarted(NonBlockingClient client, Void context) 
      { 
       client.subscribe("JmsQueue", new DestinationAdapter<Void>() 
       { 
        public void onMessage(NonBlockingClient client, Void context, Delivery delivery) 
        { 
         if (delivery.getType() == Delivery.Type.STRING) 
          System.out.println(((StringDelivery)delivery).getData()); 
        } 
       }, null, null); 
      } 
     }, null); 





     NonBlockingClient.create("amqp://localhost", clientOpts, new NonBlockingClientAdapter<Void>() 
     { 
      public void onStarted(NonBlockingClient client, Void context) 
      { 
       client.send("JmsQueue", "Jms Queue is Formed!", null); 
      } 

     }, null); 






    }//main 


}//class 

试试吧, 它

0

一个2035错误代码意味着你没有授权。您可能需要获取更多信息来确定您的客户失败的原因。您可以使用MQS_REPORT_NOAUTHMQSAUTHERRORS设置来获取有关授权失败和访问失败的更多信息。