java向远程MSMQ通道发送消息,接收队列消息
#解决java向远程MSMQ通道发送消息,接收队列消息一、问题:解决java向远程MSMQ通道发送消息,接收队列消息二、资源:需要如图所示四个文件资源下载地址:见我博客中分享的JAVA远程发送MSMQ资源三、步骤:1.将MsmqJava.jar文件引用到项目中,将其余三个文件放到jre/bin目录下2.具体发送方法如下:public void send() {String l...
#解决java向远程MSMQ通道发送消息,接收队列消息
一、问题:解决java向远程MSMQ通道发送消息,接收队列消息
二、资源:
需要如图所示四个文件
资源下载地址:https://download.csdn.net/download/qq_24950043/11662752
或见我博客中分享的JAVA远程发送MSMQ资源
三、步骤:
1.将MsmqJava.jar文件引用到项目中,将其余三个文件放到jre/bin目录下
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();
}
}
执行结果:
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();
}
}
执行结果:
4.更多方法可以自行查看Queue、Message类
5.发送的远程队列事务性一定要与代码中设置的一致,否则会发送失败,另外队列的权限记得要全开
6.以上部署完如果报错JNIMSMQ.dll 找不到依赖
(1)因为需要发送msmq,所以要求部署的电脑或者服务器必须安装msmq功能,所以先检查有没有安装msmq功能
(2)如果确保上述完成了仍然报错,那就是dll文件的依赖库缺失,使用dll文件检查工具:depends 。查看JNIMSMQ.dll 缺失了哪些依赖库,然后再下载好后放到本地库中,32位系统是C:\Windows\System32,64位系统是C:\Windows\SysWOW64
dll文件下载网址:https://www.zhaodll.com/
更多推荐
所有评论(0)