public Task Send(OutboundMessageDispatch envelope) { AmqpSession session = connection.GetSession(envelope.ProducerInfo.SessionId); AmqpProducer producer = session.GetProducer(envelope.ProducerId); producer.Send(envelope); envelope.Message.IsReadOnly = false; return Task.CompletedTask; }
public async Task Send(OutboundMessageDispatch envelope) { if (!IsInDoubt()) { await this.connection.Send(envelope); this.participants.Add(envelope.ProducerId); } }
public Task Send(OutboundMessageDispatch envelope) { CheckClosed(); FailoverRequest request = new FailoverRequest(this, SendTimeout) { DoTask = activeProvider => activeProvider.Send(envelope), Name = nameof(Send) }; request.Run(); return(request.Task); }
public void Send(OutboundMessageDispatch envelope) { if (envelope.Message.Facade is AmqpNmsMessageFacade facade) { AmqpCodec.EncodeMessage(facade); global::Amqp.Message message = facade.Message; try { var transactionalState = session.TransactionContext?.GetTxnEnrolledState(); if (envelope.SendAsync) { SendAsync(message, transactionalState); } else { // TODO: Should be unified after https://github.com/Azure/amqpnetlite/pull/374 is sorted out if (transactionalState != null) { SendSync(message, transactionalState); } else { senderLink.Send(message, TimeSpan.FromMilliseconds(session.Connection.Provider.SendTimeout)); } } } catch (TimeoutException tex) { throw ExceptionSupport.GetTimeoutException(this.senderLink, tex.Message); } catch (AmqpException amqpEx) { string messageId = AmqpMessageIdHelper.ToMessageIdString(message.Properties?.GetMessageId()); throw ExceptionSupport.Wrap(amqpEx, $"Failure to send message {messageId} on Producer {info.Id}"); } catch (Exception ex) { Tracer.ErrorFormat( $"Encountered Error on sending message from Producer {info.Id}. Message: {ex.Message}. Stack : {ex.StackTrace}."); throw ExceptionSupport.Wrap(ex); } } }
public void Send(OutboundMessageDispatch envelope) { if (envelope.Message.Facade is AmqpNmsMessageFacade facade) { AmqpCodec.EncodeMessage(facade); global::Amqp.Message message = facade.Message; try { // If the transaction has failed due to remote termination etc then we just indicate // the send has succeeded until the a new transaction is started. if (session.IsTransacted && session.IsTransactionFailed) { return; } var transactionalState = session.TransactionContext?.GetTxnEnrolledState(); if (envelope.SendAsync) { SendAsync(message, transactionalState); } else { SendSync(message, transactionalState); } } catch (TimeoutException tex) { throw ExceptionSupport.GetTimeoutException(this.senderLink, tex.Message); } catch (AmqpException amqpEx) { string messageId = AmqpMessageIdHelper.ToMessageIdString(message.Properties?.GetMessageId()); throw ExceptionSupport.Wrap(amqpEx, $"Failure to send message {messageId} on Producer {info.Id}"); } catch (Exception ex) { Tracer.ErrorFormat( $"Encountered Error on sending message from Producer {info.Id}. Message: {ex.Message}. Stack : {ex.StackTrace}."); throw ExceptionSupport.Wrap(ex); } } }
public void Send(OutboundMessageDispatch envelope) { if (envelope.Message.Facade is AmqpNmsMessageFacade facade) { AmqpCodec.EncodeMessage(facade); global::Amqp.Message message = facade.Message; try { var transactionalState = session.TransactionContext?.GetTxnEnrolledState(); if (envelope.SendAsync) { SendAsync(message, transactionalState); } else { SendSync(message, transactionalState); } } catch (TimeoutException tex) { throw ExceptionSupport.GetTimeoutException(this.senderLink, tex.Message); } catch (AmqpException amqpEx) { string messageId = AmqpMessageIdHelper.ToMessageIdString(message.Properties?.GetMessageId()); throw ExceptionSupport.Wrap(amqpEx, $"Failure to send message {messageId} on Producer {info.Id}"); } catch (Exception ex) { Tracer.ErrorFormat( $"Encountered Error on sending message from Producer {info.Id}. Message: {ex.Message}. Stack : {ex.StackTrace}."); throw ExceptionSupport.Wrap(ex); } } }
public Task Send(OutboundMessageDispatch envelope) { return(Task.CompletedTask); }
public Task Send(OutboundMessageDispatch envelope) { return(this.session.Connection.Send(envelope)); }