Skip to content

Commit

Permalink
Refactored to use OutgoingMessageInformation when building messages. …
Browse files Browse the repository at this point in the history
…Added support for delivery options in Rhino.Queues.
  • Loading branch information
RyanHauert committed Jul 30, 2012
1 parent 222a39d commit 3a45ae9
Show file tree
Hide file tree
Showing 21 changed files with 339 additions and 200 deletions.
8 changes: 6 additions & 2 deletions Rhino.ServiceBus.Spring/SpringBuilder.cs
Expand Up @@ -220,15 +220,19 @@ public void RegisterRhinoQueuesTransport()
busConfig.EnablePerformanceCounters,
applicationContext.Get<IMessageBuilder<MessagePayload>>()));

applicationContext.RegisterSingleton<IMessageBuilder<MessagePayload>>(() => new RhinoQueuesMessageBuilder(applicationContext.Get<IMessageSerializer>()));
applicationContext.RegisterSingleton<IMessageBuilder<MessagePayload>>(() => new RhinoQueuesMessageBuilder(
applicationContext.Get<IMessageSerializer>(),
applicationContext.Get<IServiceLocator>()));
}

public void RegisterRhinoQueuesOneWay()
{
var oneWayConfig = (OnewayRhinoServiceBusConfiguration) config;
var busConfig = config.ConfigurationSection.Bus;

applicationContext.RegisterSingleton<IMessageBuilder<MessagePayload>>(() => new RhinoQueuesMessageBuilder(applicationContext.Get<IMessageSerializer>()));
applicationContext.RegisterSingleton<IMessageBuilder<MessagePayload>>(() => new RhinoQueuesMessageBuilder(
applicationContext.Get<IMessageSerializer>(),
applicationContext.Get<IServiceLocator>()));
applicationContext.RegisterSingleton<IOnewayBus>(() => new RhinoQueuesOneWayBus(oneWayConfig.MessageOwners, applicationContext.Get<IMessageSerializer>(), busConfig.QueuePath, busConfig.EnablePerformanceCounters, applicationContext.Get<IMessageBuilder<MessagePayload>>()));
}

Expand Down
25 changes: 15 additions & 10 deletions Rhino.ServiceBus.Tests/Bugs/FIeldProblem_Nick.cs
Expand Up @@ -42,24 +42,29 @@ public static class SubscriptionTest
subscriptionStorage.HandleAdministrativeMessage;

Message msg = new MsmqMessageBuilder
(serializer, new CastleServiceLocator(new WindsorContainer())).BuildFromMessageBatch(new
AddInstanceSubscription
(serializer, new CastleServiceLocator(new WindsorContainer())).BuildFromMessageBatch(
new OutgoingMessageInformation
{
Endpoint = queueEndpoint.Uri.ToString(),
InstanceSubscriptionKey = id,
Type = typeof (TestMessage2).FullName,
Messages = new[] { new AddInstanceSubscription
{
Endpoint = queueEndpoint.Uri.ToString(),
InstanceSubscriptionKey = id,
Type = typeof (TestMessage2).FullName,
}}
});
send(msg);

wait.WaitOne();

msg = new MsmqMessageBuilder
(serializer, new CastleServiceLocator(new WindsorContainer())).BuildFromMessageBatch(new
RemoveInstanceSubscription
(serializer, new CastleServiceLocator(new WindsorContainer())).BuildFromMessageBatch(new OutgoingMessageInformation
{
Endpoint = queueEndpoint.Uri.ToString(),
InstanceSubscriptionKey = id,
Type = typeof (TestMessage2).FullName,
Messages = new[] { new RemoveInstanceSubscription
{
Endpoint = queueEndpoint.Uri.ToString(),
InstanceSubscriptionKey = id,
Type = typeof (TestMessage2).FullName,
}}
});

wait.Reset();
Expand Down
10 changes: 5 additions & 5 deletions Rhino.ServiceBus.Tests/CanCustomizeHeadersWithMsmq.cs
Expand Up @@ -21,7 +21,7 @@ public void it_should_add_custom_header_to_headers_collection_for_normal_message
{
using (var container = new WindsorContainer())
{
container.Register(Component.For<ICustomizeMessageHeaders>().ImplementedBy<AppIdentityCustomizer>().LifeStyle.Is(LifestyleType.Transient));
container.Register(Component.For<ICustomizeOutgoingMessages>().ImplementedBy<AppIdentityCustomizer>().LifeStyle.Is(LifestyleType.Transient));
new RhinoServiceBusConfiguration()
.UseCastleWindsor(container)
.Configure();
Expand All @@ -45,7 +45,7 @@ public void it_should_add_custom_header_to_headers_collection_for_delayed_messag
{
using (var container = new WindsorContainer(new XmlInterpreter()))
{
container.Register(Component.For<ICustomizeMessageHeaders>().ImplementedBy<AppIdentityCustomizer>().LifeStyle.Is(LifestyleType.Transient));
container.Register(Component.For<ICustomizeOutgoingMessages>().ImplementedBy<AppIdentityCustomizer>().LifeStyle.Is(LifestyleType.Transient));
new RhinoServiceBusConfiguration()
.UseCastleWindsor(container)
.Configure();
Expand Down Expand Up @@ -77,11 +77,11 @@ public void it_should_add_custom_header_to_headers_collection_for_delayed_messag
}
}

public class AppIdentityCustomizer : ICustomizeMessageHeaders
public class AppIdentityCustomizer : ICustomizeOutgoingMessages
{
public void Customize(NameValueCollection headers)
public void Customize(OutgoingMessageInformation messageInformation)
{
headers.Add("user-id", "corey");
messageInformation.Headers.Add("user-id", "corey");
}
}
}
Expand Down
23 changes: 12 additions & 11 deletions Rhino.ServiceBus.Tests/CanSendMsgsFromOneWayBusUsingRhinoQueues.cs
Expand Up @@ -51,17 +51,18 @@ public void SendMessageToRemoteBus()
bus.Start();

using (var oneWay = new RhinoQueuesOneWayBus(
new[]{
new MessageOwner
{
Endpoint = bus.Endpoint.Uri,
Name = "System",
},
},
container.Resolve<IMessageSerializer>(),
Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "one_way.esent"),
false,
new RhinoQueuesMessageBuilder(container.Resolve<IMessageSerializer>())))
new[]{
new MessageOwner
{
Endpoint = bus.Endpoint.Uri,
Name = "System",
},
},
container.Resolve<IMessageSerializer>(),
Path.Combine(Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory), "one_way.esent"),
false,
new RhinoQueuesMessageBuilder(container.Resolve<IMessageSerializer>(),
container.Resolve<IServiceLocator>())))
{
oneWay.Send("hello there, one way");

Expand Down

0 comments on commit 3a45ae9

Please sign in to comment.