java向远程MSMQ通道发送消息,接收队列消息

#解决java向远程MSMQ通道发送消息,接收队列消息

一、问题:解决java向远程MSMQ通道发送消息,接收队列消息

二、资源:
需要如图所示四个文件
java向远程MSMQ通道发送消息,接收队列消息_第1张图片
资源下载地址:https://download.csdn.net/download/qq_24950043/11662752
或见我博客中分享的JAVA远程发送MSMQ资源
三、步骤:
1.将MsmqJava.jar文件引用到项目中,将其余三个文件放到jre/bin目录下
java向远程MSMQ通道发送消息,接收队列消息_第2张图片
2.具体发送方法如下:
public void send() {
String label = “test”;
String correlationId = “test”;
String body = “test”;
try{
// 参数1:队列地址;参数2:队列类型 1接收、2发送;参数3:是否事务性
// 可向远程队列地址发送消息,这里仅列举本地地址
Queue sendQueue = new Queue(“DIRECT=TCP:192.168.0.3\Private$\test”,2,true);
// 参数1:标签;参数2:id;参数3:发送内容
Message message = new Message(label,correlationId,body);
sendQueue.send(message);
System.out.println(“发送成功”);
}catch (Exception e){
System.out.println(“发送失败”);
e.printStackTrace();
}
}
执行结果:
java向远程MSMQ通道发送消息,接收队列消息_第3张图片

3.具体接收队列消息方法如下:
public void receive() throws Exception{
String queueUrl = “DIRECT=TCP:192.168.0.3\Private$\test”;
Queue receiveQueue = new Queue(queueUrl,1,true);
try{
Message message = receiveQueue.receive(); // 接收后删除该条消息
// Message message = receiveQueue.peek(); // 接收后不删除该条消息
System.out.println(“接收内容”);
System.out.println(message.getLabel()); // 获取标签
System.out.println(message.getCorrelationId()); // 获取ID
System.out.println(message.getMessage()); // 获取内容
}catch (NullPointerException e){
System.out.println(“队列为空”);
}catch (MessageQueueException e){
System.out.println(“队列报错”);
e.printStackTrace();
}
}
执行结果:
java向远程MSMQ通道发送消息,接收队列消息_第4张图片

4.更多方法可以自行查看Queue、Message类

5.发送的远程队列事务性一定要与代码中设置的一致,否则会发送失败,另外队列的权限记得要全开

java向远程MSMQ通道发送消息,接收队列消息_第5张图片java向远程MSMQ通道发送消息,接收队列消息_第6张图片

你可能感兴趣的:(技术分享)