16
16
using Grumpy . MessageQueue . Msmq . Interfaces ;
17
17
using Microsoft . Extensions . Logging ;
18
18
using Newtonsoft . Json ;
19
- using ObjectExtensions = Grumpy . Common . Extensions . ObjectExtensions ;
20
19
21
20
namespace Grumpy . MessageQueue . Msmq
22
21
{
@@ -25,7 +24,6 @@ public abstract class Queue : IQueue
25
24
{
26
25
private const int MaxMsmqMessageSize = 4096000 ;
27
26
private System . Messaging . MessageQueue _messageQueue ;
28
- private readonly AccessMode _accessMode ;
29
27
private readonly object _messageQueueLock ;
30
28
private readonly Timer _disconnectTimer ;
31
29
@@ -49,7 +47,7 @@ protected Queue(ILogger logger, IMessageQueueManager messageQueueManager, IMessa
49
47
Durable = durable ;
50
48
_messageQueueLock = new object ( ) ;
51
49
_disconnectTimer = new Timer ( Disconnect , null , 3600000 , 3600000 ) ;
52
- _accessMode = accessMode ;
50
+ AccessMode = accessMode ;
53
51
}
54
52
55
53
/// <summary>
@@ -80,11 +78,14 @@ protected Queue(ILogger logger, IMessageQueueManager messageQueueManager, IMessa
80
78
/// <inheritdoc />
81
79
public bool Transactional { get ; }
82
80
81
+ /// <inheritdoc />
82
+ public AccessMode AccessMode { get ; }
83
+
83
84
/// <inheritdoc />
84
85
public int Count ( )
85
86
{
86
- if ( ! _accessMode . In ( AccessMode . Receive , AccessMode . SendAndReceive ) )
87
- throw new AccessModeException ( nameof ( Count ) , _accessMode ) ;
87
+ if ( ! AccessMode . In ( AccessMode . Receive , AccessMode . SendAndReceive ) )
88
+ throw new AccessModeException ( nameof ( Count ) , AccessMode ) ;
88
89
89
90
try
90
91
{
@@ -123,16 +124,13 @@ public virtual void Connect()
123
124
{
124
125
lock ( _messageQueueLock )
125
126
{
126
- if ( _messageQueue != null )
127
- Disconnect ( ) ;
128
-
129
127
if ( _messageQueue == null )
130
128
{
131
- _messageQueue = GetQueue ( _accessMode ) ;
129
+ _messageQueue = GetQueue ( AccessMode ) ;
132
130
133
131
if ( _messageQueue != null )
134
132
{
135
- switch ( _accessMode )
133
+ switch ( AccessMode )
136
134
{
137
135
case AccessMode . Receive :
138
136
_messageQueue . MessageReadPropertyFilter = new MessagePropertyFilter { AppSpecific = true , Id = true , Body = true } ;
@@ -147,11 +145,11 @@ public virtual void Connect()
147
145
_messageQueue . DefaultPropertiesToSend = new DefaultPropertiesToSend { Recoverable = Durable } ;
148
146
break ;
149
147
default :
150
- throw new ArgumentOutOfRangeException ( nameof ( _accessMode ) , _accessMode , "Unknown Access Mode" ) ;
148
+ throw new ArgumentOutOfRangeException ( nameof ( AccessMode ) , AccessMode , "Unknown Access Mode" ) ;
151
149
}
152
150
}
153
151
154
- Logger . Information ( "Connected to Message Queue {@Queue} {@MessageQueue} " , this , _messageQueue ) ;
152
+ Logger . Information ( "Connected to Message Queue {@Queue}" , this ) ;
155
153
}
156
154
157
155
if ( _messageQueue == null )
@@ -187,8 +185,8 @@ public void Disconnect()
187
185
/// <inheritdoc />
188
186
public void Send < T > ( T message )
189
187
{
190
- if ( ! _accessMode . In ( AccessMode . Send , AccessMode . SendAndReceive ) )
191
- throw new AccessModeException ( nameof ( Send ) , _accessMode ) ;
188
+ if ( ! AccessMode . In ( AccessMode . Send , AccessMode . SendAndReceive ) )
189
+ throw new AccessModeException ( nameof ( Send ) , AccessMode ) ;
192
190
193
191
try
194
192
{
@@ -248,8 +246,8 @@ public async Task<ITransactionalMessage> ReceiveAsync(int millisecondsTimeout, C
248
246
249
247
private async Task < ITransactionalMessage > ReceiveAsyncInternal ( int millisecondsTimeout , CancellationToken cancellationToken )
250
248
{
251
- if ( ! _accessMode . In ( AccessMode . Receive , AccessMode . SendAndReceive ) )
252
- throw new AccessModeException ( nameof ( Send ) , _accessMode ) ;
249
+ if ( ! AccessMode . In ( AccessMode . Receive , AccessMode . SendAndReceive ) )
250
+ throw new AccessModeException ( nameof ( Send ) , AccessMode ) ;
253
251
254
252
var timeout = TimeSpan . FromMilliseconds ( millisecondsTimeout ) ;
255
253
0 commit comments