在 IBM MQ Lite 中推送消息时出错
Error is occurred while pushing the Message in IBM MQ Lite
我正在使用 IBM MQ Light。
我正在尝试通过 java 程序在 IBM MQ Lite 中推送消息,我的连接非常好。当我 运行 程序并检查本地主机时,它显示客户端已连接但在 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
2035 错误代码表示您未被授权。您可能需要获取更多信息以确定客户端失败的原因。您可以使用 MQS_REPORT_NOAUTH or MQSAUTHERRORS 设置来获取有关权限失败和访问失败的更多信息。
我有一个示例代码,您可以通过它在 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
试一试,
它适用于我的情况
我正在使用 IBM MQ Light。
我正在尝试通过 java 程序在 IBM MQ Lite 中推送消息,我的连接非常好。当我 运行 程序并检查本地主机时,它显示客户端已连接但在 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
2035 错误代码表示您未被授权。您可能需要获取更多信息以确定客户端失败的原因。您可以使用 MQS_REPORT_NOAUTH or MQSAUTHERRORS 设置来获取有关权限失败和访问失败的更多信息。
我有一个示例代码,您可以通过它在 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
试一试, 它适用于我的情况