您当前的位置: 首页 >  Java

wu@55555

暂无认证

  • 3浏览

    0关注

    201博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

wu@55555 发布时间:2019-09-03 22:49:59 ,浏览量:3

#解决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/

关注
打赏
1664985904
查看更多评论
立即登录/注册

微信扫码登录

0.0551s