问题标签 [netmsmqbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2732 浏览

wcf - 在 TransactionScope 中使用 netMsmqBinding 调用 WCF 停止事务

我有一个通过 MSMQ 运行的 WCF 日志记录服务。项目记录到 Sql Server 2005 数据库。如果在 TransactionScope 之外使用,每个功能都可以正常工作。在 TransactionScope 实例中使用时,调用总是会导致事务中止。Message = "事务已中止"。

我需要做什么才能让这个调用在事务中工作?有没有可能。我已经读过,对于流经服务边界的客户端事务,绑定必须支持事务流,这会立即将绑定限制为仅 NetNamedPipeBinding、NetTcpBinding、WSHttpBinding、WSDualHttpBinding 和 WSFederationHttpBinding。

0 投票
4 回答
2820 浏览

.net - 哪种 WCF 绑定性能最高?

我必须在我的 WCF 服务中获得最大的吞吐量性能。在我的一项测试中,以下服务使用 NetTcpBinding 每分钟仅获得 50k 数据项。像 NetMsmqBinding 这样的断开连接会提高这种性能吗?

服务和客户端使用 WCF 并在同一台机器上运行。

上面的代码是实际代码的简化版本。

0 投票
1 回答
816 浏览

serialization - 反序列化来自 msmq 的消息通过 netmsmq 绑定发送

我们有 wcf 服务,并且在出错时,我们使用 netmsmq 绑定而不是使用 System.Messaging 的 Send Method() 将消息发送到“毒药”队列。

我们尝试从毒物队列中获取这些消息,但是在反序列化时,我得到了很多十六进制值的垃圾数据......

0 投票
2 回答
367 浏览

c# - MSMQ 只尝试 3 次接收一条消息才发生错误

我的队列中有一些消息。现在我注意到在 3 次尝试服务主机故障之后。这是正常行为吗?3倍从何而来?我以为它来自receiveRetryCount。但我将其设置为 1。

我的队列中有 20 条消息等待处理。负责处理消息的 WCF 操作支持事务,因此如果它不能处理消息,它将抛出,以便消息留在队列中。

我不认为在多次重试后会出现故障 ServiceHost,这部分是否记录在某处?

我在我的 winxp 机器上运行 MSMQ 服务。

我对指示服务主机在多次重试后会出现故障的文档更感兴趣。这部分是真的吗?

0 投票
1 回答
4116 浏览

windows-7 - MSMQ 专用队列大小限制

我正在尝试将消息放入本地计算机上定义的专用队列中,但队列大小不能超过 8 MB。每次达到该大小后,我都会遇到异常。特定队列的大小设置为 10 GB。我正在运行 Windows 7 专业版。因此有限制吗?

0 投票
1 回答
6485 浏览

wcf - 如何在 WCF 中使用 MSMQ?

我可以使用许多 WCF 绑定,除了netMsmqBinding. 我得到的是:

CommunicationObjectFaultedException:“通信对象 System.ServiceModel.ServiceHost 无法用于通信,因为它处于故障状态。”

在 System.ServiceModel.Channels.CommunicationObject.Close(时间跨度超时)

我在安装了以下功能的 Windows Server 2008 R2 中进行了尝试

  • 消息队列
  • 消息队列服务
  • 消息队列服务器
  • 消息队列触发器
  • HTTP 支持
  • 多播支持
  • 消息队列 DCOM 代理

我还尝试在服务器管理器中手动添加私有消息队列,但它不起作用。

我正在使用 Windows 服务来托管我的 MSMQ。我的服务合同是

我的 app.config 包含

0 投票
5 回答
2175 浏览

.net - .net 4.0 和 server 2008 的 MSMQ wcf 激活问题

我有从 net 3.5 移植的 .net 4.0 应用程序,它使用在服务器 2008 x64 上运行的 net.msmq

设置

  • 地址为“net.msmq://localhost/private/msmqdataservice.svc”的 net.msmq 服务
  • net.msmq 端点地址为“net.msmq://localhost/private/msmqdataservice.svc”
  • MSMQ 中的队列 -> 名称 = "$private\msmqdataservice.svc"

现在一切都在使用 .net 3.5 进行生产。

我在服务器上安装了 .net 4.0 并创建了新站点以在同一个盒子上登台。

新的暂存 msmq 设置是

  • 地址为“net.msmq://localhost/private/staging/msmqdataservice.svc”的 net.msmq 服务
  • net.msmq 端点地址为“net.msmq://localhost/private/staging/msmqdataservice.svc”
  • MSMQ 中的队列 -> 名称 = "$private\staging/msmqdataservice.svc"

为不同的站点创建了另一个队列。

我对新站点所做的另一个更改是,这是 iis 中的不同站点,侦听不同的 IP 地址。我已将 net.msmq 绑定到“localhost”。主站点对 net.msmq -> 'localhost' 也有相同的绑定。我认为应该是这样。请指出是否需要一些不同的配置。

问题是我的请求正在排队,但没有被应用程序接收,它只是停留在那里

日志中没有任何错误的迹象。我在与此相关的日志中看到的唯一内容是警告“msmqactivation 无法发现队列”。虽然这个警告我从来没有正确理解,因为我们一直看到这个在 3.5 中使用 msmq 时一切正常。

我能想到的任何事情都经过验证并且是正确的。

  • 应用程序的应用程序池作为网络服务运行,并且具有对队列的完全访问权限。
  • net.msmq 激活服务与网络服务一起运行
  • 尝试了不同的服务 url 命名约定,结果相同

概括

请提供有关使用 net.msmq 设置多个站点的任何见解。我对两个站点都使用了 value = 'localhost' 的 net.msmq 绑定。我认为这是机器名身份。

有什么方法可以诊断这个问题?

您可能想到的任何其他事情都可能会有所帮助。

昨天我们不得不推迟发布,因为在花费了大约 100 个工时之后,我们无法弄清楚问题出在哪里。也不能让它在我的开发机器中中断。

编辑

问题是在创建新站点命名约定后不起作用

net.msmq 服务,地址为“net.msmq://localhost/private/staging/msmqdataservice.svc” net.msmq 以地址“net.msmq://localhost/private/staging/msmqdataservice.svc”结束 MSMQ 队列 - > 名称 = "$private\staging/msmqdataservice.svc"

它使用服务名称 net.msmq://localhost/private/msmqdataservice.svc

但现在我不能让两个站点使用完全相同的端点。

有什么方法可以在同一台机器上具有不同 url 和不同队列的两个不同站点中拥有相同的端点?

0 投票
1 回答
460 浏览

wcf - 任何人都在 net.msmq 上看到过 protobuf-net 的这个问题

我看到一个问题,我使用 protobuf-net 通过 wcf net.msmq 发送大消息并收到以下错误:

格式化程序在尝试反序列化消息时引发异常:反序列化操作“DeliverData”的请求消息正文时出错。预期来自命名空间“ http://mynamespace ”的结束元素“proto”

如果消息大小低于 16k,它可以工作

如果我删除 protobuf-net,它可以工作

如果我切换到basichttp,它可以工作

但是,如果消息大小超过 16k,使用 protobuf-net,通过 net.msmq,我会收到错误消息。我已将 maxBufferPoolSize 和 maxReceivedMessageSize 设置得足够大,但它没有帮助。

有没有其他人看过这个?有没有其他人使用 protobuf-net + net.msmq 处理大消息并让它工作?

0 投票
4 回答
7261 浏览

c# - 如何检查公共 MSMQ 是否为空

有什么方法可以检查公共 MSMQ 是否为空?对于私有 MSMQ,这很容易:

我将如何对公共 MSMQ 进行相同的检查?如果我尝试使用上面的代码检查公共 MSMQ,则会在 Peak 上出现错误:

System.ArgumentOutOfRangeException:长度不能小于零。

0 投票
1 回答
601 浏览

wcf - MSMQ 通过 WCF 吞下格式错误的消息,没有错误,没有警告

我有一个使用 WCF 响应 MSMQ 上的消息的服务。当消息格式正确时,它可以正常工作,我们很高兴。当消息用于不同的服务并且操作不同时,消息将保留在队列中,我们获取日志条目,我们修复,我们很高兴。

但是,当消息具有正确的操作,但包含服务器无法反序列化的 XML 元素时,消息将从队列中消失,我们不会获得日志条目,并且我们几乎不知道发生了什么。我们不开心。

我试过添加一个 IErrorHandler。我试过添加一个故障事件处理程序。我唯一能做的就是使用 WCF 中内置的诊断日志记录。有什么方法可以使用我自己的记录器或错误处理程序来响应代码中的此类错误?

我的队列恰好是事务性的,但这似乎与这个问题没有任何区别。这发生在 Windows Server 2003 上的 MSMQ 3.0 版上。

此源代码显示了问题: