Skip to content

Commit 25b9645

Browse files
Change arguments in IServiceBusPublisher to use a System.Object for messageBody and make sessionId optional
1 parent 76f7814 commit 25b9645

File tree

3 files changed

+24
-39
lines changed

3 files changed

+24
-39
lines changed

src/Atc.Azure.Messaging/ServiceBus/IServiceBusPublisher.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ public interface IServiceBusPublisher
44
{
55
Task PublishAsync(
66
string topicOrQueue,
7-
string sessionId,
8-
string messageBody,
7+
object message,
8+
string? sessionId = null,
99
IDictionary<string, string>? properties = null,
1010
TimeSpan? timeToLive = null,
1111
CancellationToken cancellationToken = default);

src/Atc.Azure.Messaging/ServiceBus/ServiceBusPublisher.cs

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Text.Json;
12
using Azure.Messaging.ServiceBus;
23

34
namespace Atc.Azure.Messaging.ServiceBus;
@@ -13,50 +14,33 @@ public ServiceBusPublisher(IServiceBusSenderProvider clientProvider)
1314

1415
public Task PublishAsync(
1516
string topicOrQueue,
16-
string sessionId,
17-
string messageBody,
17+
object message,
18+
string? sessionId = null,
1819
IDictionary<string, string>? properties = null,
1920
TimeSpan? timeToLive = null,
2021
CancellationToken cancellationToken = default)
2122
{
22-
return PerformPublishAsync(
23-
topicOrQueue,
24-
sessionId,
25-
messageBody,
26-
properties,
27-
timeToLive,
28-
cancellationToken);
29-
}
30-
31-
private Task PerformPublishAsync(
32-
string topicOrQueue,
33-
string sessionId,
34-
string messageBody,
35-
IDictionary<string, string>? properties,
36-
TimeSpan? timeToLive,
37-
CancellationToken cancellationToken)
38-
{
39-
var message = CreateServiceBusMessage(
40-
sessionId,
41-
messageBody,
42-
properties,
43-
timeToLive);
44-
4523
return clientProvider
4624
.GetSender(topicOrQueue)
47-
.SendMessageAsync(message, cancellationToken);
25+
.SendMessageAsync(
26+
CreateServiceBusMessage(
27+
sessionId,
28+
JsonSerializer.Serialize(message),
29+
properties,
30+
timeToLive),
31+
cancellationToken);
4832
}
4933

5034
private static ServiceBusMessage CreateServiceBusMessage(
51-
string sessionId,
35+
string? sessionId,
5236
string messageBody,
5337
IDictionary<string, string>? properties,
5438
TimeSpan? timeToLive)
5539
{
5640
var message = new ServiceBusMessage(messageBody)
5741
{
5842
MessageId = Guid.NewGuid().ToString(),
59-
SessionId = sessionId,
43+
SessionId = sessionId ?? Guid.NewGuid().ToString(),
6044
};
6145

6246
if (timeToLive != null)

test/Atc.Azure.Messaging.Tests/ServiceBus/ServiceBusPublisherTests.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Atc.Azure.Messaging.ServiceBus;
22
using AutoFixture.AutoNSubstitute;
33
using Azure.Messaging.ServiceBus;
4+
using System.Text.Json;
45

56
namespace Atc.Azure.Messaging.Tests.ServiceBus
67
{
@@ -12,7 +13,7 @@ public async Task Should_Get_ServiceBusSender_For_Topic(
1213
ServiceBusPublisher sut,
1314
[Substitute] ServiceBusSender sender,
1415
string topicName,
15-
string messageBody,
16+
object messageBody,
1617
IDictionary<string, string> properties,
1718
TimeSpan timeToLive,
1819
string sessionId,
@@ -24,8 +25,8 @@ public async Task Should_Get_ServiceBusSender_For_Topic(
2425

2526
await sut.PublishAsync(
2627
topicName,
27-
sessionId,
2828
messageBody,
29+
sessionId,
2930
properties,
3031
timeToLive,
3132
cancellationToken);
@@ -41,7 +42,7 @@ public async Task Should_Send_Message_On_ServiceBusSender(
4142
ServiceBusPublisher sut,
4243
[Substitute] ServiceBusSender sender,
4344
string topicName,
44-
string messageBody,
45+
object messageBody,
4546
IDictionary<string, string> properties,
4647
TimeSpan timeToLive,
4748
string sessionId,
@@ -53,8 +54,8 @@ public async Task Should_Send_Message_On_ServiceBusSender(
5354

5455
await sut.PublishAsync(
5556
topicName,
56-
sessionId,
5757
messageBody,
58+
sessionId,
5859
properties,
5960
timeToLive,
6061
cancellationToken);
@@ -74,7 +75,7 @@ await sut.PublishAsync(
7475
message.Body
7576
.ToString()
7677
.Should()
77-
.BeEquivalentTo(messageBody);
78+
.BeEquivalentTo(JsonSerializer.Serialize(messageBody));
7879
message.ApplicationProperties
7980
.Should()
8081
.BeEquivalentTo(properties);
@@ -89,7 +90,7 @@ public async Task Should_Handle_Default_Parameters(
8990
ServiceBusPublisher sut,
9091
[Substitute] ServiceBusSender sender,
9192
string topicName,
92-
string messageBody,
93+
object messageBody,
9394
string sessionId)
9495
{
9596
provider
@@ -98,8 +99,8 @@ public async Task Should_Handle_Default_Parameters(
9899

99100
await sut.PublishAsync(
100101
topicName,
101-
sessionId,
102-
messageBody);
102+
messageBody,
103+
sessionId);
103104

104105
_ = sender
105106
.Received(1)
@@ -119,7 +120,7 @@ await sut.PublishAsync(
119120
message.Body
120121
.ToString()
121122
.Should()
122-
.BeEquivalentTo(messageBody);
123+
.BeEquivalentTo(JsonSerializer.Serialize(messageBody));
123124
message.ApplicationProperties
124125
.Should()
125126
.BeEmpty();

0 commit comments

Comments
 (0)