可能是我表述得不够清楚:
详细如下:
    可以实现windows服务实现往消息队列中写入消息,也可实现读消息队列中的消息。
    问题在于:外部应用程序如何向windows服务写入内容呢?
    是不是通过接口?
    请大家帮帮忙,给个主意,强烈等待中!

解决方案 »

  1.   

    Jinniu(金牛) :
       本机上的其它应用程序(本人写的),需要向消息队列中写入消息,为了统一管理,借道这个windows服务。其它应用程序向windows应用程序写入内容,windows服务中统一将内容写入本机的消息队列,再异步将消息发出。
      

  2.   

    xrll():
        我也看了MessageQueue,关键是消息的发送与接收已经实现,现在苦恼的是其它应用程序如何与这个windows服务交互?
      

  3.   

    可以設一個媒體
    比如 sql server 2000, window service 從messagequeue 裡讀到有 message 時將它寫入 sql, 其他的程序就讀這個 sql 了.
      

  4.   

    可是,如何将外部系统的数据写入messagequeue,可不可以在window service里加个接口,供外部将message 写入messagequeue?大家帮帮忙?
      

  5.   

    不是很了解请参考:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/csharpmsmq.asp
    http://www.vchome.net/dotnet/dotnetdocs/dotnet7.htm
    http://www.codeproject.com/csharp/MSMQChannelNew.asp
      

  6.   

    如何将外部系统的数据写入messagequeue,可不可以在window service里加个接口,供外部将message 写入messagequeue?
    //==>
    那加接口不會在 window service 裡加.
    接口應該是在那個外部程序裡.
      

  7.   

    to  cuike519(studing...):
         MSDNMessageService我也下载安装了,不明白的是MessageInterface中写入的数据被MessageService调用?MSDNMessageService整得太复杂了?to SVG(ben):
        //==>
        那加接口不會在 window service 裡加.
        接口應該是在那個外部程序裡.
        
        我目前采用的是外部程序向消息队列写入消息;windowsserivce再异步读出队列中的消息,做下一步处理。希望完美的处理方法是:外部程序只调用一个统一的接口(最好由windowsserivce提供)来写入消息,差异就在这里?
        另外我本人用c#实现异步消息队列时发现:
        关闭windowsservice时,会将正receive的那条消息丢掉。目前解决方法:写入消息同时向数据库插入记录,接收时再删除数据库中此条记录;再定时取在数据库中但在消息队列中没有的消息,进行额外处理。缺点:效率低下。不知有没有更好的方法?    看到众位大侠在关注此贴,所以在此一并发表,但若解决,别开贴100分重酬,立即兑现!   
      

  8.   

    在二次开发短信系统?以前也做过一个, 
    当时是使用飞天短信平台我是直接写进 db 里就ok, 飞天会去读 db 的了
    效率也不低
      

  9.   

    to SVG(ben):不是短信系统,是一个引擎,用于自发驱动数据的流转,大约100条消息/秒(平均)。你说的方法是完全可行,只是我这里对节约数据库资源要求非常高。
    只怪我太笨,msdnmessageservice都已实现了,可是硬是把自己给看晕了!仰天长啸!
      

  10.   

    从servicebase继承一个类,里面再写个timer,定时触发,去处理MSMQ
      

  11.   

    用管道吧,大家都往管道里读写,或者共享内存,这样效率肯定高
    参考_pipe:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/_crt__pipe.asp
      

  12.   

    我也很疑惑,主要是我的消息队列中的消息是一个对象,用XML 或者 二进制 序列化。但是在Windows服务中读取消息时,在反序列化,造型时有问题,但是Catch不出异常!!
      

  13.   

    参考我项目的一个经验
    你的其他的应用程序可以通过socket发消息,这个消息的头表示是那个应用程序(当然socket要你自己写)
    windows service循环检测socket发来的消息,并将信息解包存放到消息队列中,楼主以为如何?
      

  14.   

    to wangsaokui(无间道II(前传)) :
       没有socket编程经验,目前采取了一条比较笨的方法:其它应用程序各自为战,向消息队列发送消息;windowsservice循环读出消息,再进行下一步的处理。
       
    关于直接用接口实现,研究了两天,可能是功力太浅,无法实现;退而求其次,还是用我原先的老办法
    不过,对几位的关注,深表感谢!
      

  15.   

    我这里有一个windows消息队列使用的例子,一个进程往指定的消息队列中写消息,另外一个读其中的消息!使用很方便!不过顺带我也有一个问题,不知道谁能帮帮忙:就是如何知道一个windows消息队列中当前消息的个数,就象unix下可以取得当前消息队列中消息的个数那样!