代码之家  ›  专栏  ›  技术社区  ›  Anand Deshmukh

在IBM MQ Lite中推送消息时出错

  •  0
  • Anand Deshmukh  · 技术社区  · 8 年前

    我正在使用IBM MQ Light。

    我正试图通过java程序在IBM MQ Lite中推送一条消息,“My Connection is well and good”。当我运行程序并检查Localhost时,它显示客户端已连接,但在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
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   ValerieLampkin    8 年前

    2035错误代码表示您未经授权。您可能需要获得更多信息来确定客户失败的原因。你可以使用 MQS_REPORT_NOAUTH MQSAUTHERRORS 设置以获取有关授权失败和哪些访问失败的详细信息。

        2
  •  0
  •   Anand Deshmukh    8 年前

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

    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
    

    试试看, 这对我来说很管用