标签: msmq

MSMQ发送消息问题...(c#)

我的代码:

  string _path = "mymachine\\Private$\\example";
  // create a message queue object
  MessageQueue MQueue = new MessageQueue(_path);

  // create the message and set the base properties
  Message Msg = new Message("Messagem");
  Msg.ResponseQueue = MQueue;
  Msg.Priority = MessagePriority.Normal;
  Msg.UseJournalQueue = true;
  Msg.Label = "gps1";      

  // send the message
  MQueue.Send(Msg);

  // close the mesage queue
  MQueue.Close();
Run Code Online (Sandbox Code Playgroud)

没有错误,但我的MessageQueue中没有任何内容......任何帮助?

c# msmq

4
推荐指数
1
解决办法
4114
查看次数

MSMQ如何管理消息?

似乎MSMQ不使用任何数据库管理系统来管理消息.
MSMQ如何管理消息?
它是否将消息存储在平面文件中?

我正在尝试实现一个消息管理系统.

queue msmq

4
推荐指数
1
解决办法
3396
查看次数

已收到MSMQ消息但未提供Windows 2008 R2

我有一个名为myPrivateTransactionQueue的事务性队列,托管在名为myReceivingServer的Win2008R2服务器上,该服务器应该从另一个名为mySendingServer的服务器接收消息.当mySendingServer发送消息时,mySendingServer上的MSMQ日志中会出现一条条目,其中显示:

Message with ID {f748cc48-8017-4a64-9ff6-61c68564445f}\56008 was sent to queue DIRECT=OS:<myReceivingServerName >\private$\<myPrivateTransactionalQueue>
Run Code Online (Sandbox Code Playgroud)

但是,myReceivingServer,在MSMQ日志中有一个条目:

Message came over network
Run Code Online (Sandbox Code Playgroud)

但是,该消息未在myReceivingServer上传递给myPrivateTransactionalQueue.到目前为止我看过的事情:

  1. myReceivingServer上的应用程序事件日志没有错误
  2. 在myPrivateTransactionalQueue上,"Everyone"和"Anonymous Logon"被授予完全控制权
  3. myReceivingServer上的事务死信队列为空
  4. mySendingServer上的临时传出队列为空

我在这里有点心理,因为我根本无法解释这个消息.任何帮助将非常感激.

编辑:我发现这个链接http://blogs.msdn.com/b/johnbreakwell/archive/2010/01/22/why-does-msmq-keep-losing-my-messages.aspx所以我会看看这是否解释我的问题.将以任何决议回复.

编辑2:好的,我讨厌这个,但问题只是解决了.我在上面的配置中没有改变任何东西.但我现在有了它的工作.

编辑3:这是John Breakwell的评论:为了确保您在再次看到此问题时知道根本原因(并且没有理由相信它已经好转),您需要启用一些选项,例如负面源日记作为在我的博客中提到.现在您知道您的系统没有弹性,现在是修复它的好时机

msmq

4
推荐指数
1
解决办法
3265
查看次数

是否可以从MessageQueue实例获取IEnumerable <Message>

我想在一个MSMQ消息队列上使用Linq.据我所知,我需要将消息队列作为IEnumerable Howerver

var queryableQ = new MessageQueue(myQueuePath) as IEnumerable<Message>;
Run Code Online (Sandbox Code Playgroud)

导致querableQ为null,表示无法像这样强制转换MessageQueue.

是否有一种不同的方法可用于使用Linq访问MessageQueue.

(我知道GetAllMessages()将返回一个数组,当然很容易用Linq查询,但我宁愿不将整个队列内容带入内存)

linq msmq

4
推荐指数
1
解决办法
224
查看次数

MassTransit - 将消息更新到客户端

我没有很多使用MSMQ的经验,有人建议我看看MassTransit来帮助实现解决方案,但我很难弄清楚使用MassTransit + MSMQ是否适合这项工作.

我们有一个由多个用户使用的WPF应用程序(3.5).持久性是从应用程序(通过NHibernate)到数据库完成的.到目前为止,用户会定期刷新视图,以确保他们拥有最新的更新.但是,我们现在希望在使用发布/订阅消息传递持久化实体时向每个应用程序实例发送通知.客户端应用程序都在同一个域中运行,并且应该能够满足大多数所需的依赖关系(例如,在客户端计算机上安装MSMQ).

总结一下:Client1发布更新消息---> ????? ---->所有其他活动客户端都会收到它.

由于我是MSMQ的新手,我甚至不确定架构应该是什么样子.

  • 每个客户端计算机是否需要具有本地MSMQ队列来接收消息?
  • 我们只需要在服务器上创建一个队列,所有客户端都在那里监听消息吗?如果是这样,只是一个队列就足够了,还是我们需要创建一个服务才能正确分发消息?
  • 这甚至是工作的正确工具吗?

我创建了一个小POC希望它可以工作,但我最终得到了我认为被称为"竞争消费者"的东西.我想要发生的是一个应用程序实例发送消息,所有应用程序实例都接收它.

任何建议,方向或建议将不胜感激!

这是POC视图模型代码(注意 - 在我看来,localhost将替换为每个应用程序实例将发送消息的服务器):

更新:添加网络密钥(小猫)

更新:我上传了示例代码 https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0ByDMJXKmYB7zMjBmYzYwNDEtYzMwOC00Y2RhLTk1MDYtZjc0NTI2M2E3Y2Qy&hl=zh_CN

public class MainViewModel : IDisposable, INotifyPropertyChanged 
{
    private Guid id;

    public MainViewModel()
    {
        id = Guid.NewGuid();
        Publish = new RelayCommand(x => OnExecutePublishCommand(), x => !string.IsNullOrEmpty(Message));
        Messages = new ObservableCollection<MessagePayload>();

        Bus.Initialize(sbc =>
        {
            sbc.UseMsmq();
            sbc.SetNetwork("Kittens");
            sbc.VerifyMsmqConfiguration();
            sbc.UseMulticastSubscriptionClient();
            sbc.ReceiveFrom(string.Format("msmq://localhost/{0}", ConfigurationManager.AppSettings["queue"]));
            sbc.Subscribe(subs => subs.Handler<MessagePayload>(OnReceiveMessage));
        });
    }

    public ICommand Publish { get; private set; }

    private string message;
    public string Message
    {
        get { return …
Run Code Online (Sandbox Code Playgroud)

c# wpf msmq masstransit

4
推荐指数
1
解决办法
2016
查看次数

如何有效地检索所有私有MSMQ队列的名称?

如何在不使用?的情况下检索本地计算机上所有私有MSMQ队列的名称System.Messaging.MessageQueue.GetPrivateQueuesByMachine(".")?我正在使用PowerShell,因此任何使用COM,WMI或.NET的解决方案都是可以接受的,尽管后者更可取.

请注意,此问题有一个返回所有队列对象的解决方案.我不想要这些对象(当有很多队列时它太慢而且有点松散),我只想要他们的名字.

.net com powershell wmi msmq

4
推荐指数
1
解决办法
5597
查看次数

直接向BizTalk或通过MSMQ发送消息?

这是我第一次使用BizTalk进行跨机器,异步,可靠的通信.
我想知道有没有办法直接从一台机器发送消息到BizTalk队列,或者我必须使用本地MSMQ,后者又向BizTalk发送消息?

在C#中,是否有用于向BizTalk队列发送消息的绑定?
对于MSMQ,我知道有NetMsmqBinding.

干杯

更新:

由于我引入了一些混乱,我会尝试解释一下,如果我错了,请纠正我.
据我所知,ESB实现了可用于可靠的异步通信(简称消息传递)的队列或消息通道的概念.现在,我很难将BizTalk放入这个概念中.如果BizTalk是一个ESB,如Sonic或TIBCO,有几十种对ESB概念的解释和相同数量的意见......
现在,据我所知,例如在实现JMS API的TIBCO中,没有队列或排队本地客户端计算机上的服务(例如MSMQ),但它们在TIBCO ESB和客户端应用程序上存在和配置我使用JMS API将消息发送到这些队列.
因此,当我想通过BizTalk与不同机器上的应用程序进行通信并且我想使用消息传递时,我将在本地计算机上使用MSMQ,MSMQ会将这些消息传输到BizTalk和下游的其他应用程序?
另外,我应该在哪里配置本地MSMQ和BizTalk之间的通信?我应该将BizTalk配置为侦听给定的MSMQ以获取新消息,还是应该在MSMQ本身上进行某些配置?

c# messaging wcf biztalk msmq

4
推荐指数
1
解决办法
2272
查看次数

队列不存在或您没有足够的权限来执行操作

当我尝试通过消息总线测试队列时.我已经检查过,权限设置为完全控制每个人.我使用来自不同机器的'msmqmng.exe send'将消息放入队列,它可以工作,绝对是我发送的消息.那么我可能会遗漏哪些其他活动部件?

msmq

4
推荐指数
1
解决办法
5934
查看次数

ServiceStack vs NServiceBus

我刚刚开始研究ServiceStack和WOW,我不妨把WCF抛到窗外,但它也可以使用Redis发送消息.

我熟悉NServiceBus,它也用于发送消息和pub/subs.由于ServiceStack是一个Web服务,您可以为外部客户端打开它; 我不认为NServiceBus可以做到这一点.

除此之外,选择其中一种技术的优缺点是什么?有哪些技术可能是首选的.

c# msmq nservicebus redis servicestack

4
推荐指数
2
解决办法
1859
查看次数

.Net Core中不存在System.Messaging.dll?

我有一个C#Publisher-Subscriber项目,打算MSMQ service在Windows中使用。该代码是在中开发的.Net Framework 4。我想在中运行它.Net Core。但是我得到了错误

“类型或名称空间名称“消息传递”在名称空间系统中不存在”。

.Net Core是否支持MSMQ?

.Net Core是否具有一个System.Messaging.dll似乎缺少的对应项?

c# dll msmq system.messaging .net-core

4
推荐指数
1
解决办法
2052
查看次数