本文整理汇总了C#中ITransactionContext.GetOrThrow方法的典型用法代码示例。如果您正苦于以下问题:C# ITransactionContext.GetOrThrow方法的具体用法?C# ITransactionContext.GetOrThrow怎么用?C# ITransactionContext.GetOrThrow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITransactionContext
的用法示例。
在下文中一共展示了ITransactionContext.GetOrThrow方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCurrentReceiveContext
static StepContext GetCurrentReceiveContext(ITransactionContext currentTransactionContext)
{
try
{
return currentTransactionContext.GetOrThrow<StepContext>(StepContext.StepContextKey);
}
catch (Exception exception)
{
throw new InvalidOperationException(string.Format("Attempted to reply, but could not get the current receive context - are you calling Reply outside of a message handler? Reply can only be called within a message handler because the destination address is found as the '{0}' header on the incoming message",
Headers.ReturnAddress), exception);
}
}
示例2: SendOutgoingMessages
async Task SendOutgoingMessages(ITransactionContext context)
{
var outgoingMessages = context.GetOrThrow<ConcurrentQueue<OutgoingMessage>>(OutgoingMessagesItemsKey);
var model = GetModel(context);
foreach (var outgoingMessage in outgoingMessages)
{
var destinationAddress = outgoingMessage.DestinationAddress;
var message = outgoingMessage.TransportMessage;
var props = model.CreateBasicProperties();
var headers = message.Headers;
var timeToBeDelivered = GetTimeToBeReceivedOrNull(message);
props.Headers = headers
.ToDictionary(kvp => kvp.Key, kvp => (object)HeaderValueEncoding.GetBytes(kvp.Value));
if (timeToBeDelivered.HasValue)
{
props.Expiration = timeToBeDelivered.Value.TotalMilliseconds.ToString("0");
}
var express = headers.ContainsKey(Headers.Express);
props.Persistent = !express;
model.BasicPublish(ExchangeName, destinationAddress, props, message.Body);
}
}