本文整理汇总了C#中IMessage.Finish方法的典型用法代码示例。如果您正苦于以下问题:C# IMessage.Finish方法的具体用法?C# IMessage.Finish怎么用?C# IMessage.Finish使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IMessage
的用法示例。
在下文中一共展示了IMessage.Finish方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleMessage
public void HandleMessage(IMessage message)
{
var messageInformation = new MessageInformation
{
UniqueIdentifier = Guid.NewGuid(),
Topic = _topic,
Channel = _channel,
HandlerType = _handlerType,
MessageType = _messageType,
Message = message,
DeserializedMessageBody = null,
Started = DateTime.UtcNow
};
_bus.SetCurrentMessageInformation(messageInformation);
// Get handler
object handler;
try
{
handler = _objectBuilder.GetInstance(_handlerType);
messageInformation.HandlerType = handler.GetType();
}
catch (Exception ex)
{
messageInformation.Finished = DateTime.UtcNow;
_messageAuditor.TryOnFailed(_logger, _bus,
new FailedMessageInformation
(
messageInformation,
FailedMessageQueueAction.Finish,
FailedMessageReason.HandlerConstructor,
ex
)
);
message.Finish();
return;
}
// Get deserialized value
object value;
try
{
value = _serializer.Deserialize(_concreteMessageType, message.Body);
}
catch (Exception ex)
{
messageInformation.Finished = DateTime.UtcNow;
_messageAuditor.TryOnFailed(_logger, _bus,
new FailedMessageInformation
(
messageInformation,
FailedMessageQueueAction.Finish,
FailedMessageReason.MessageDeserialization,
ex
)
);
message.Finish();
return;
}
// Handle message
messageInformation.DeserializedMessageBody = value;
_messageAuditor.TryOnReceived(_logger, _bus, messageInformation);
try
{
_handleMethod.Invoke(handler, new[] { value });
}
catch (Exception ex)
{
bool requeue = (message.Attempts < message.MaxAttempts);
messageInformation.Finished = DateTime.UtcNow;
if (requeue)
message.Requeue();
else
message.Finish();
_messageAuditor.TryOnFailed(_logger, _bus,
new FailedMessageInformation
(
messageInformation,
requeue ? FailedMessageQueueAction.Requeue : FailedMessageQueueAction.Finish,
FailedMessageReason.HandlerException,
ex
)
);
return;
}
messageInformation.Finished = DateTime.UtcNow;
_messageAuditor.TryOnSucceeded(_logger, _bus, messageInformation);
//.........这里部分代码省略.........