public async Task SendMessage([SelectionList("MessageTypes")] string messageType, string name) { var type = messageTypeFor(messageType); var message = Activator.CreateInstance(type).As <Message>(); message.Name = name; _session = await _host.TrackActivity().IncludeExternalTransports().SendMessageAndWait(message); }
public async Task SendMessageDirectly([SelectionList("MessageTypes")] string messageType, string name, [SelectionList("Channels")] Uri address) { var type = messageTypeFor(messageType); var message = Activator.CreateInstance(type).As <Message>(); message.Name = name; _session = await _host.TrackActivity().IncludeExternalTransports() .ExecuteAndWait(x => x.SendToDestination(address, message)); }
protected async Task <EnvelopeRecord> afterProcessingIsComplete() { _session = await theSender .TrackActivity(_defaultTimeout) .AlsoTrack(theReceiver) .DoNotAssertOnExceptionsDetected() .SendMessageAndWait(theMessage); return(_session.AllRecordsInOrder().LastOrDefault(x => x.EventType == EventType.MessageSucceeded || x.EventType == EventType.MovedToErrorQueue)); }
protected async Task <EnvelopeRecord> afterProcessingIsComplete() { using (var host = JasperHost.For(theOptions)) { _session = await host .TrackActivity() .DoNotAssertOnExceptionsDetected() .SendMessageAndWait(theMessage); return(_session.AllRecordsInOrder().LastOrDefault(x => x.EventType == EventType.MessageSucceeded || x.EventType == EventType.MovedToErrorQueue)); } }
public async Task SendGarbledMessage([SelectionList("Channels")] Uri address) { var bytes = Encoding.UTF8.GetBytes("<garbage/>"); var envelope = Envelope.ForData(bytes, null); envelope.Message = new Garbled(); envelope.ContentType = "application/json"; envelope.Destination = address; _session = await _host.TrackActivity().DoNotAssertOnExceptionsDetected().IncludeExternalTransports() .ExecuteAndWait(x => x.SendEnvelope(envelope)); }
public async Task send_multiple_messages_in_order() { var colorsChosens = Enumerable.Range(0, 100).Select(i => new ColorChosen { Name = i.ToString() }); var sequence = Guid.NewGuid().ToString(); using var host = JasperHost.For(host => { host.Endpoints.ConfigureKafka(); host.Endpoints.ListenToKafkaTopic("messages", ConsumerConfig).Sequential(); host.Endpoints.Publish(pub => pub.Message <ColorChosen>().ToKafkaTopic("messages", ProducerConfig) .CustomizeOutgoing(e => e.Headers.Add("MessageKey", sequence)) // use the same message key in Kafka ); host.Handlers.IncludeType <ColorHandler>(); host.Services.AddSingleton <ColorHistory>(); host.Extensions.UseMessageTrackingTestingSupport(); }); ITrackedSession session = await host .TrackActivity() .Timeout(60.Seconds()) .IncludeExternalTransports() .ExecuteAndWait(async ctx => { foreach (ColorChosen colorsChosen in colorsChosens) { await ctx.Publish(colorsChosen); } }); IEnumerable <string> colorsSent = session.AllRecordsInOrder() .Where(e => e.EventType == EventType.Sent) .Select(e => e.Envelope.Message).Cast <ColorChosen>().Select(c => c.Name); IEnumerable <string> colorsPublished = colorsChosens.Select(c => c.Name); colorsSent.ShouldBe(colorsPublished); }