public void Serialize <T>(Stream stream, SendContext <T> context) where T : class { try { context.ContentType = ContentType; var envelope = new JsonMessageEnvelope(context, context.Message, EventNamespaceTypeMetadataCache.GetMessageTypes <T>(_messageTypeProvider)); using (var writer = new StreamWriter(stream, Encoding.Value, 1024, true)) using (var jsonWriter = new JsonTextWriter(writer)) { jsonWriter.Formatting = Formatting.Indented; Serializer.Value.Serialize(jsonWriter, envelope, typeof(MessageEnvelope)); jsonWriter.Flush(); writer.Flush(); } } catch (SerializationException) { throw; } catch (Exception ex) { throw new SerializationException("Failed to serialize message", ex); } }
public void Serialize <T>(Stream stream, SendContext <T> context) where T : class { try { context.ContentType = JsonMessageSerializer.JsonContentType; JsonMessageEnvelope jsonMessageEnvelope = new JsonMessageEnvelope((SendContext)context, (object)context.Message, TypeMetadataCache <T> .MessageTypeNames); using (StreamWriter streamWriter = new StreamWriter(stream, JsonMessageSerializer._encoding.Value, 1024, true)) { using (JsonTextWriter jsonTextWriter = new JsonTextWriter((TextWriter)streamWriter)) { jsonTextWriter.Formatting = Formatting.Indented; JsonMessageSerializer._serializer.Value.Serialize((JsonWriter)jsonTextWriter, (object)jsonMessageEnvelope, typeof(MessageEnvelope)); jsonTextWriter.Flush(); streamWriter.Flush(); } } } catch (SerializationException ex) { throw; } catch (Exception ex) { throw new SerializationException("Failed to serialize message", ex); } }
public ConsumeContext Deserialize(ReceiveContext receiveContext) { var body = Encoding.UTF8.GetString(receiveContext.GetBody()); var customMessage = JsonConvert.DeserializeObject <CustomMessage>(body); var serviceBusSendContext = new AzureServiceBusSendContext <CustomMessage>(customMessage, CancellationToken.None); string[] messageTypes = { "urn:message:MassTransitSample:CustomMessage" }; var serviceBusContext = receiveContext as ServiceBusReceiveContext; serviceBusSendContext.ContentType = new ContentType(JsonMessageSerializer.JsonContentType.ToString()); serviceBusSendContext.SourceAddress = serviceBusContext.InputAddress; serviceBusSendContext.SessionId = serviceBusContext.SessionId; // sending JToken because we are using default Newtonsoft deserializer/serializer var messageEnv = new JsonMessageEnvelope(serviceBusSendContext, JObject.Parse(body), messageTypes); return(new JsonConsumeContext(JsonSerializer.CreateDefault(), receiveContext, messageEnv)); }
public async Task Should_create_the_brokered_message_receiver() { var message = new Mock <Message>(); message.Object.ContentType = JsonMessageSerializer.ContentTypeHeaderValue; message.Object.MessageId = NewId.NextGuid().ToString(); using (var stream = new MemoryStream()) { ServiceBusSendContext <PingMessage> context = new AzureServiceBusSendContext <PingMessage>(new PingMessage(), CancellationToken.None); var envelope = new JsonMessageEnvelope(context, context.Message, TypeMetadataCache <PingMessage> .MessageTypeNames); using (var writer = new StreamWriter(stream, Encoding.UTF8, 1024, true)) using (var jsonWriter = new JsonTextWriter(writer)) { jsonWriter.Formatting = Formatting.Indented; JsonMessageSerializer.Serializer.Serialize(jsonWriter, envelope, typeof(MessageEnvelope)); jsonWriter.Flush(); writer.Flush(); } message.Object.Body = stream.ToArray(); } var binder = new Mock <IBinder>(); LogContext.ConfigureCurrentLogContext(); var handler = Bus.Factory.CreateBrokeredMessageReceiver(binder.Object, LogContext.Current.Logger, cfg => { cfg.InputAddress = new Uri("sb://masstransit-build.servicebus.windows.net/input-queue"); cfg.UseRetry(x => x.Intervals(10, 100, 500, 1000)); cfg.Consumer(() => new Consumer()); }); Console.WriteLine(handler.GetProbeResult().ToJsonString()); // await handler.Handle(message.Object); }
public ConsumeContext Deserialize(ReceiveContext receiveContext) { var body = Encoding.UTF8.GetString(receiveContext.GetBody()); var customMessage = JsonConvert.DeserializeObject <EventGridEvent>(body); var serviceBusSendContext = new AzureServiceBusSendContext <EventGridEvent>(customMessage, CancellationToken.None); // this is the default scheme, that has to match in order messages to be processed // EventGrid messages type of EventGridEvent within namespace Microsoft.Azure.EventGrid.Models string[] messageTypes = { "urn:message:Microsoft.Azure.EventGrid.Models:EventGridEvent" }; var serviceBusContext = receiveContext as ServiceBusReceiveContext; serviceBusSendContext.ContentType = new ContentType(JsonMessageSerializer.JsonContentType.ToString()); serviceBusSendContext.SourceAddress = serviceBusContext.InputAddress; serviceBusSendContext.SessionId = serviceBusContext.SessionId; // sending JToken because we are using default Newtonsoft deserializer/serializer var messageEnv = new JsonMessageEnvelope(serviceBusSendContext, JObject.Parse(body), messageTypes); return(new JsonConsumeContext(JsonSerializer.CreateDefault(), receiveContext, messageEnv)); }
public MessageEnvelope GetMessageEnvelope() { var envelope = new JsonMessageEnvelope(this, Message, TypeMetadataCache <T> .MessageTypeNames); return(envelope); // var message = new JsonSerializedMessage(); // // if (CorrelationId.HasValue) // message.CorrelationId = CorrelationId.Value.ToString(); // if (ConversationId.HasValue) // message.CorrelationId = ConversationId.Value.ToString(); // if (InitiatorId.HasValue) // message.CorrelationId = InitiatorId.Value.ToString(); // if (RequestId.HasValue) // message.CorrelationId = RequestId.Value.ToString(); // if (TimeToLive.HasValue) // message.ExpirationTime = JsonConvert.ToString(DateTime.UtcNow + TimeToLive); // // byte[] body = Body; // // message.Body = Encoding.UTF8.GetString(body); // // return message; }
public void Serialize <T>(Stream stream, SendContext <T> context) where T : class { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (context == null) { throw new ArgumentNullException(nameof(context)); } context.ContentType = EncryptedMessageSerializer.EncryptedContentType; var jsonMessageEnvelope = new JsonMessageEnvelope(context, context.Message, TypeMetadataCache <T> .MessageTypeNames); using (var transform = this.CreateAndSetEncryptionContext(context.Headers, context.CancellationToken).ConfigureAwait(false).GetAwaiter().GetResult()) using (var encryptStream = new DisposingCryptoStream(stream, transform, CryptoStreamMode.Write)) using (var bsonWriter = new BsonDataWriter(encryptStream)) { this.serializer.Serialize(bsonWriter, jsonMessageEnvelope, typeof(MessageEnvelope)); bsonWriter.Flush(); } }
public MessageEnvelope GetMessageEnvelope() { var envelope = new JsonMessageEnvelope(this, Message, TypeMetadataCache <T> .MessageTypeNames); return(envelope); }