JAVA 远程连接Msmq

JAVA 远程连接MsmqJAVA 远程连接 Msmq 踩了不少坑 特此记录一下最近做了个项目 其中需从一台服务器连接到另一台服务 从上面的 msmq 中取出数据 百度了一下写法 试过之后发现只能在本地操作 即只能读写本地计算机上的 msmq 信息 远程到其他机器会报出 远程计算机不可用 MQ ERROR REMOTE MACHINE NOT AVAILABLE 错误 现将解决此错误的方法在此说明 首先我们需要在目标计算机上安

JAVA 远程连接Msmq

踩了不少坑,特此记录一下

最近做了个项目,其中需从一台服务器连接到另一台服务,从上面的msmq中取出数据。百度了一下写法,试过之后发现只能在本地操作,即只能读写本地计算机上的msmq信息,远程到其他机器会报出“远程计算机不可用(MQ_ERROR_REMOTE_MACHINE_NOT_AVAILABLE)”错误,现将解决此错误的方法在此说明。

首先我们需要在目标计算机上安装MSMQ,具体做法不再赘述,直接百度即可。

然后右键我的电脑点击管理,找到消息队列,右键点击属性

在这里插入图片描述
把所有挑了√的都取消,一个也不用挑。

然后后我们需要在上面创建一个私有队列在这里插入图片描述
如图建立了一个专用队列test,右键test属性,点击安全
JAVA 远程连接Msmq
为三个用户追加权限,都点完全控制
然后打开注册表,找到MSMQ,在parameters下的security中添加AllowNonauthenticatedRpc和NewRemoteReadServerDenyWorkgroupClient,值都为1
之后我们需要两个组件,MsmqJava.dll,MsmqJava.jar
将MsmqJava.dll放入项目根目录,jar正常引入。












然后废话不多说,直接上代码:

向MSMQ发送信息

 public class test { 
    static { 
    System.loadLibrary("MsmqJava"); } public static void main(String[] args) { 
    try { 
    // 192.168.1.110为远程计算机的IP地址 // private$\\test是队列名字 String fullname = "DIRECT=tcp:192.168.1.110\\private$\\test"; Queue queue = new Queue(fullname); // 标题 String label = "testmessage"; // 内容 String body = "this is a test message"; String correlationId = "001"; // 创建消息 Message msg = new Message(body, label, correlationId); // 发送 queue.send(msg); queue.close(); } catch (MessageQueueException ex1) { 
    ex1.printStackTrace(); } catch (Exception e) { 
    e.printStackTrace(); } } } 

读取MSMQ中的信息

public class test { 
    static { 
    System.loadLibrary("MsmqJava"); } public static void main(String[] args) { 
    try { 
    String fullname = "DIRECT=tcp:192.168.1.110\\private$\\test"; Queue queue = new Queue(fullname); Message message = queue.peek();//receive()也可以用这个方法读取,读取完此条信息在队列中消失 System.out.println("获取地址192.168.1.110远程MSMQ信息成功,message:"+new String(message.getBody(),"utf-8")); System.out.println( System.getProperty("java.library.path")); queue.close(); } catch (MessageQueueException ex1) { 
    ex1.printStackTrace(); } catch (Exception e) { 
    e.printStackTrace(); } } } 

这种方法也有个很大的问题,不能够枚举,每次只能读出一条数据,想尝试一下重构,希望哪位懂C++的大哥可以帮助一下。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228729.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:20
下一篇 2026年3月16日 下午6:21


相关推荐

  • php 正则获取邮箱,PHP 邮箱正则表达式[通俗易懂]

    php 正则获取邮箱,PHP 邮箱正则表达式[通俗易懂]PHP邮箱正则表达式作者:PHPYuan时间:2018-07-0900:01:10PHP邮箱正则表达式代码如下:/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,})$/实例$mail=’runoob@runoob.com’;//邮箱地址$pattern=”/^[_a-z0-9-]+(.[_a-z0-9-…

    2022年6月17日
    30
  • cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd[通俗易懂]

    cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd[通俗易懂]今天白白跟大家分享一下cocos2dx单点触摸经验。cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCan

    2022年7月2日
    30
  • javascript 数据类型

    javascript 数据类型js 真是一门有趣的语言 在 js 的世界中 数据有两种类型 一种是引用类型 一种是基本数据类型引用类型 在 js 的世界里 有一句话 所有的一切 都是 object 那么问题来了 object 是基本数据还是引用类型的呢 嘿嘿 卖个关子 后面再讲 先来讲讲对于引用类型的定义 引用类型值则是指那些保存在堆内存中的对象 意思是变量中保存的实际上只是一个指针 这个指针指向内存中的

    2026年3月18日
    2
  • 超简单部署使用Maven私库 Nexus

    超简单部署使用Maven私库 Nexusdocker拉取:dockerpulldocker.io/sonatype/nexus3运行容器:dockerrun-d-p8085:8081–namenexusdocker.io/sonatype/nexus,映射到本地的8085端口,等一会儿就好了,用dockerps-a命令查看访问地址:http://192.64.23.111:8085/)…

    2022年7月18日
    15
  • exceljs 笔记

    exceljs 笔记官网 exceljs 可以生成带样式的表格 但是解析表格来说不是很方便引用 npminstallex 创建表格 sheetvarExce require exceljs varworkbook newExcel Workbook varsheet workbook addWorksheet MySheet Removethe

    2026年3月19日
    1
  • python django 数据库_Apache+Mysql+PHP/Python简单项目

    python django 数据库_Apache+Mysql+PHP/Python简单项目基于Python+Django+mysql的实验室设备管理系统当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统环境原因。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。高校的实验室设备管理水平和实验室设备管理规模日益成为反映高校综合实…

    2022年10月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号