-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathActiveMqConnectionFactory.cs
More file actions
41 lines (37 loc) · 1.37 KB
/
ActiveMqConnectionFactory.cs
File metadata and controls
41 lines (37 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using Apache.NMS;
using ViennaNET.Utils;
namespace ViennaNET.Messaging.ActiveMQQueue
{
/// <inheritdoc />
public class ActiveMqConnectionFactory : IActiveMqConnectionFactory
{
private const int DefaultPort = 61616;
/// <inheritdoc />
public IConnectionFactory GetConnectionFactory(ActiveMqQueueConfiguration configuration)
{
configuration.ThrowIfNull(nameof(configuration));
Uri connectUri;
if (configuration.ConnectionString == null)
{
var port = configuration.Port.HasValue ? configuration.Port : DefaultPort;
connectUri = new Uri($"activemq:tcp://{configuration.Server}:{port}");
}
else
{
connectUri = configuration.ConnectionString;
}
if (connectUri.Scheme == "failover")
{
// Инициализация фабрики AMQP.ConnectionFactory указана явно из-за бага в Apache.NMS не позволяющего
// инициализировать failover подклюение по AMQP протоколу строкой вида failover:(amqp://host1,amqp://host2)
// https://github.com/apache/activemq-nms-api/blob/main/src/nms-api/NMSConnectionFactory.cs
return new Apache.NMS.AMQP.ConnectionFactory(connectUri);
}
else
{
return new NMSConnectionFactory(connectUri);
}
}
}
}