怎样实现接收远程主机上的队列消息啊?请问大家又做过这方面的开发啦?参考交流一下。谢谢..

解决方案 »

  1.   

    1.我已经加入了域。
    2.已经设置了权限。
    3.可以远程发送消息。
    为什么就不能接收到远程主机的msmq消息队列?谁有开发过相当的项目啦。。
      

  2.   

    参考解决msmq接收远程主机私有队列消息的问题! 
      

  3.   


    感谢你的回复,已经试过了。。问题还是存在。。就是不能远程接收msmq队列消息。
      

  4.   

    看看是否是队列权限的问题1. 添加 Anonymous Logon 用户, 默认只有发送消息权限
    2. 添加 Everyone 用户 ,完全控制权限,选择框基本全选
      

  5.   

    msmq   研究不明白~
      

  6.   


    通过调用windows\system32\mqoa.dll 这个Message Queuing ActiveX Interface API函数就可以做到;
    下面是一个简单的例子供参考using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using MSMQ;
    namespace MyTest
    {
       public class Form2 : System.Windows.Forms.Form
       {
            private System.ComponentModel.Container components = null;        MSMQ.MSMQQueueInfoClass mqinfor=new MSMQQueueInfoClass();
            private void Form2_Load(object sender, System.EventArgs e)
            {
                
                
            }        private void button1_Click(object sender, System.EventArgs e)
            {
                mqinfor.FormatName="Direct=TCP:" + this.txthost.Text + "\\" + this.txtpath.Text; 
                MSMQ.MSMQQueue mq=mqinfor.Open(MSMQ.MQACCESS.MQ_SEND_ACCESS.GetHashCode(),MSMQ.MQSHARE.MQ_DENY_NONE.GetHashCode());
                MSMQ.MSMQMessageClass msg=new MSMQMessageClass();
                msg.Label="activeX Test";
                msg.Body=this.txtmsg.Text;
                
                MSMQ.MSMQTransactionClass MQ_NO_TRANSACTION=new MSMQTransactionClass();
                
                object a=MQ_NO_TRANSACTION;
                msg.Send(mq,ref a);
                        }        private void button2_Click(object sender, System.EventArgs e)
            {
                try
                {
                    mqinfor.FormatName="Direct=TCP:" + this.txthost.Text + "\\" + this.txtpath.Text; 
                
                    MSMQ.MSMQQueue mq=mqinfor.Open(MSMQ.MQACCESS.MQ_RECEIVE_ACCESS.GetHashCode(),MSMQ.MQSHARE.MQ_DENY_NONE.GetHashCode());
                
                    MSMQ.MSMQTransactionClass MQ_NO_TRANSACTION=new MSMQTransactionClass();
                    object a=MQ_NO_TRANSACTION;
                    bool WantDestinationQueue=false;
                    object b=WantDestinationQueue;
                    bool WantBody =true;
                    object c=WantBody;
                    long ReceiveTimeout =100;
                    object d=ReceiveTimeout;
                    bool WantConnectorType=false;
                    object e1=WantConnectorType;
                    MSMQ.MSMQMessage msg=mq.Receive(ref a,ref b,ref c,ref d,ref e1);
                    this.txtrece.Text=DateTime.Now.ToString() + " " + msg.Body.ToString();
                }
                catch(Exception e2)
                {
                    MessageBox.Show(e2.Message);
                }
            }
        }
    }
      

  7.   

    --- app.config ---
    <add key="path" value="FormatName:DIRECT=OS:<机器名或地址>\private$\<消息对列名>" />-- code -- 
    string MSMQPath = ConfigurationManager.AppSettings["path"];
    messageQueue = new MessageQueue(MSMQPath);
    messageQueue.Formatter = new BinaryMessageFormatter();.....Message msg = messageQueue.Receive();
    string msgContent = (string)msg.body;