我正在开发一个使用MSMQ进行进程间通信的应用程序,我需要安装项目才能安装该服务(如果尚未安装).我已经查看了有关使其成为先决条件的信息,但到目前为止,我一直未能找到这个.有任何想法吗?
我目前正在为我公司的新消息总线架构进行分析和设计.我曾经尝试过MSMQ在过去做这样的事情并且运行良好并且考虑为这个项目再做同样的事情,但是使用WCF作为API而不是使用System.Messaging API.有没有人有过WCF的MSMQ经验?是否更容易使用System.Messaging API?使用WCF而不是System.Messaging会有什么好处,反之亦然?
我的计算机已连接到域,但是当我创建公共队列时:
MessageQueue.Create(@".\testqueue");
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
工作组安装计算机不支持该操作.
为什么MSMQ会认为我在工作组计算机上?
我一直在研究SQL Server Service Broker的范围来替换当前的消息传递解决方案MSMQ.我想知道SQL Server Service Broker的缺点与MSMQ相比,以下标准.
我已经创建了一个WCF服务并且正在使用netMsmqBinding绑定.
这是一个简单的服务,它将Dto传递给我的服务方法,并且不期望响应.该消息放在MSMQ中,一旦被选中插入数据库.
确保没有数据丢失的最佳方法是什么.
我尝试了以下两种方法:
抛出一个例外
这会将消息放入死信队列中以供手动阅读.我的工作开始时我可以处理这个
在绑定上设置receiveRetryCount ="3"
经过3次尝试 - 即时发生,这似乎将消息留在队列中,但是我的服务出错了.重新启动我的服务会重复此过程.
理想情况下,我想做以下事项:
尝试处理消息
我能做到吗?如果是这样的话?你能否指出我有关如何最好地利用WCF和MSMQ为我的给定sceneria的任何好文章.
任何帮助将非常感激.谢谢!
一些额外的信息
我在Windows XP和Windows Server 2003上使用MSMQ 3.0.不幸的是,我不能使用针对MSMQ 4.0和Vista/2008的内置有害消息支持.
任何人都可以给我一些关于如何在脚本中设置MSMQ队列权限的指针,最好是PowerShell,但我会使用VBscript
虽然我的问题与SO上已经发现的问题类似,但这些帖子对我没有帮助,所以这里是:
鉴于:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\SimpleClient\@BinaryEnabled = 'Yes'使用以下代码发送消息:
var q = new MessageQueue(@"FormatName:Direct=OS:il-mark-lap\private$\test");
q.Send(string.Format("Test message sent at {0} from {1}", DateTime.Now, Environment.MachineName));
Run Code Online (Sandbox Code Playgroud)
其中il-mark-lap是带队列的机器的地址.
为了使这件事有效,我该怎么做?
非常感谢.
我很好奇是否有人对提供MSMQ访问的Java库有任何建议?我已经下载了J-Integra Java-COM库的试用版,并构建并运行了他们的MSMQ示例应用程序,但我很好奇是否有任何好的(免费:))替代品.我遇到了一些JNI实现,比如jMSMQ和其他几个,但是如果可能的话我宁愿避免使用JNI.
我们还调查了一些.NET < - > JMS互操作解决方案,如JNBridge(使用ActiveMQ).我认为我们公司决定将我们的排队集中在MSMQ中,这将是我们理想的解决方案.
我们希望在.NET端使用WCF(netMsmq或msmqIntegration).我有点担心java方面将如何处理WCF消息(二进制编码),但应该有那些选项(带有文本编码和MSMQ传输的customBinding?),所以我不太担心.主要担心在Java中访问MSMQ.
我们的另一个选择是在每个队列的输入端放置一个瘦Web服务层,并以这种方式实现互操作.然而,性能有点令人担忧.
有什么建议?非常感谢任何人的时间.
我正在编写一个Windows服务来使用MSMQ消息.该服务将具有高活动时段(80k消息很快进入)和长时间不活动(可能是几天没有新消息).
处理消息是非常网络限制的,所以我从并行性中获得了很大的好处.但是在不活动期间,我不希望绑定一堆线程来等待很快就会收到的消息.
MSMQ界面似乎非常关注同步工作流 - 获取一条消息,处理它,获取另一条消息等等.我应该如何构建我的代码,以便在高活动期间我可以利用并行性但不会占用一堆没有活动期间的线程?使用TPL的奖励积分.伪代码将不胜感激.
如何使用SignalR在.NET 4.0系统中实现通知,该系统由ASP.NET MVC 3应用程序(使用表单身份验证),SQL Server 2008数据库和MSMQ WCF服务(托管在WAS中)来处理数据?运行时环境包含在Windows Server 2008 R2 Standard Edition上运行的IIS 7.5.
我只玩了样本,没有广泛的SignalR知识.
这是一些背景知识
Web应用程序接受来自用户的数据并将其添加到表中.然后,它调用WCF服务的单向操作(使用数据库密钥)来处理数据(任务).Web应用程序返回到一个页面,告诉用户数据已提交,并在处理完成时通知他们.用户可以查看"索引"页面,查看哪些任务已完成,失败或正在进行中.他们可以继续提交更多任务(这与以前的数据无关).他们可以关闭浏览器并稍后返回.
基于MSMQ的WCF服务从数据库中读取记录并处理数据.这可能需要几毫秒到几分钟的时间.处理完数据后,记录会以相应的状态(错误或失败)和结果进行更新.
大多数情况下,WCF服务不执行任何处理,但是当它执行时,用户通常希望尽快知道何时完成.即使用户没有要由WCF服务处理的数据,用户仍将使用Web应用程序的其他部分.
这就是我所做的
在主导航栏中,我有一个指示器(类似于Facebook或Google+),供用户在任务状态发生变化时通知他们.当他们点击它时,他们会得到已完成的内容的摘要,然后可以根据需要查看结果.
使用jQuery,我轮询服务器的更改.控制器操作检查是否存在任何已修改(已完成或失败)的进程并返回它们,否则等待几秒钟并再次检查而不返回客户端.为了避免客户端超时,如果没有更改,它将在30秒后返回.jQuery脚本等待一段时间再试一次.
问题
每个查看页面的用户的性能都会下降.他们没有必要特别做任何事情.我们注意到Firefox 7+和Safari的内存使用量会随着时间的推移而增加.
使用SignalR
我希望切换到SignalR可以减少轮询,从而减少资源需求,尤其是在数据库中没有任何改变任务的情况下.我很难通过WCF服务来通知客户端它已完成处理任务,因为它使用基于表单的身份验证.
通过提出这个问题,我希望有人能够更好地了解他们如何使用SignalR重新设计我的通知方案,如果有的话.
msmq ×10
.net ×3
wcf ×2
.net-4.0 ×1
architecture ×1
c# ×1
deployment ×1
dns ×1
interop ×1
java ×1
messaging ×1
permissions ×1
powershell ×1
signalr ×1
sql-server ×1
vbscript ×1
workgroup ×1