- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的应用程序使用临时队列将服务总线响应定向到原始调用方。我们使用内置的 ServiceStack.RabbitMq.RabbitMqServer
来发布和处理消息。
Message<IReturn<ResponseDto>> message = BuildMessage(requestDto);
// get the temporary queue for the current IMessageQueueClient
string queueName = messageclient.GetTempQueueName();
message.ReplyTo = queueName;
// publish the message
messageclient.Publish(message);
但是,如果调用抛出异常,直接捕获响应(如下)将失败。
IMessage<ResponseDto> responseMessage = messageclient.Get<ResponseDto>(queueName, timeOut);
messageclient.Ack(responseMessage);
ResponseDto response = responseMessage.GetBody();
响应消息的主体将是一个 ServiceStack.ErrorResponse
导致 responseMessage.GetBody()
返回一个空对象。错误不会作为 responseMessage.Error
返回。
我们通过将消息正文作为原始 JSV 字符串获取并验证结果来解决这个问题。
IMessage<string> responseMessage = messageclient.Get<string>(queueName, timeOut);
messageclient.Ack(responseMessage);
// get the body of the message as a string
string messageBody = responseMessage.GetBody();
// parse as error response
var error = messageBody.FromJsv<ErrorResponse>();
// if no response status, assume good
if (error?.ResponseStatus != null)
throw new Exception(error.ResponseStatus.Message);
// parse as response and return
return messageBody.FromJsv<ResponseDto>();
这适用于大多数情况,但是,如果返回的 RabbitMq 消息 JSON 中的字符串值包含逗号,则该字符串不包含在消息正文 JSV 的引号中(这似乎是 ServiceStack 中的一个问题。使用
) 这会导致该字段不完整,并忽略后续字段。JsonTypeSerializer
从 JSON -> JSV 转换时的文本
是否有更好的方法来检索异常?或者是否有序列化问题的解决方法?
最佳答案
不应该将 JSON 转换为 JSV,它们是不同的格式。 JSV 使用 CSV 风格的编码和转义,这在 JSON 中是非法的,JSON 要求所有字符串值都被引用并且字符串用 \
转义。
本质上,您应该使用用于序列化它的确切序列化器和类型来反序列化消息,如果您这样做,应该不会有任何问题。
ServiceStack's Rabbit MQ支持将复杂类型的有效负载序列化为 JSON,因此不清楚 JSV 的来源。
如果您需要访问原始文本负载,您应该使用 Rabbit MQ 的低级 API 而不是 ServiceStack 的 RabbitMQ 高级 API,后者会自动尝试在幕后反序列化复杂类型的消息。
要获取原始文本正文,您可以执行以下操作:
var rabbitMqClient = messageclient as RabbitMqProducer;
var mqResult = rabbitMqClient.GetMessage(queueName, noAck: false);
var props = msgResult.BasicProperties;
var bodyString = msgResult.Body.FromUtf8Bytes(); //normally JSON
关于c# - 当 ReplyTo 是临时队列时检索异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44782067/
请任何人澄清一下 WCF 中的 WS 寻址是否支持多个 ReplyTo 或不? 最佳答案 这将深入回答您的问题 @ Microsoft ... 多个端点和唯一地址 您可能希望在特定服务上公开多个端点有
如何在 ReplayTo 字段中添加与发件人不同的电子邮件地址?似乎 MailMessage.ReplyTo 已被弃用,因此我尝试使用 ReplyToList 代替。 但是它告诉我 Property
我们的应用程序使用临时队列将服务总线响应定向到原始调用方。我们使用内置的 ServiceStack.RabbitMq.RabbitMqServer 来发布和处理消息。 Message> message
JMS API 允许消息声明一个回复 Destination实例。 (即 Queue 的父类(super class),Topic )。然后,服务可以使用此队列向发送者发送回复消息。 Destinat
我想做的是在 magento 的核心交易电子邮件中添加一个 replyto 字段。类似于此 post 中存档的内容使用 bcc,但用于 replyTo。有什么想法吗? 更新:只是为了澄清这一点。在 m
我正在使用 Spring Framework 中的 JmsTemplate 通过 JMS 进行集成。我想对外部系统执行同步(即阻塞)调用。我读过为了做到这一点,我应该使用 CorrelationID。
我想设置 .NET MailMessage 的 ReplyTo 值。 MailMessage.ReplyTo属性: ReplyTo is obsoleted for this type. Please
我想做的是在 magento 的核心交易电子邮件中添加一个 replyto 字段。类似于此 post 中存档的内容使用 bcc,但用于 replyTo。有什么想法吗? 更新:只是为了澄清这一点。在 m
我已经创建了一个 WS-BPEL 工作流,它会调用异步 Web 服务并等待回调响应。 Carbon 应用程序也已成功部署到 BPS。 关于我的外部异步网络服务的详细信息 1.需要通过http进行基本认
我的 mailmanager.cs 中有以下代码: m_replyTo="abc@qwe.com, asd@asd.cvb" if (!String.IsNullOrEmpty(m_replyTo))
我正在尝试将带有 replyTo 属性的消息发送到 WebSphere MQ。 @SpringBootApplication public class WmqSenderApplication {
我有一个问题:我们正在尝试使用 Apache CXF 实现 WS-Addressing。我可以设置一些标题,如 To 或 Action,但我找不到设置其他标题的方法,如 From、ReplyTo 或
我正在尝试使用 Apache CXF 2.7.18 实现 WS-Addressing。我可以设置一些标题,如 To、Action 等。但我想从 SOAP 请求中删除/删除 ReplyTo http:/
我有一个异步 bpel-processes,它调用客户端上的 cllback-service 来传输其响应。目前,我在相应的 wsdl 文件中静态定义了客户端端点,一切正常。 现在我试图让 ODE 不
我想使用 JAX-WS API 创建启用 WS-Addressing 的 Web 服务客户端。我使用 wsimport 从 WSDL 文件创建客户端 stub ,并且可以通过使用 Addressing
我无法发送用户地址为 FROM 和 Reply To 的电子邮件 在 FormRequest 中: public function persist() { $reservation =
我有一个需要使用异步 Web 服务的应用程序,该服务需要 header 中的 wsa:MesssageId、wsa:ReplyTo wsa:address 和 ws:To。虽然 wsa:Message
我是一名优秀的程序员,十分优秀!