ModelWrapper.cs
1.32 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
using Microsoft.Extensions.ObjectPool;
using RabbitMQ.Client;
using System;
namespace Ray.EventBus.RabbitMQ
{
public class ModelWrapper : IDisposable
{
readonly IBasicProperties persistentProperties;
readonly IBasicProperties noPersistentProperties;
public DefaultObjectPool<ModelWrapper> Pool { get; set; }
public ConnectionWrapper Connection { get; set; }
public IModel Model { get; set; }
public ModelWrapper(
ConnectionWrapper connectionWrapper,
IModel model)
{
Connection = connectionWrapper;
Model = model;
persistentProperties = Model.CreateBasicProperties();
persistentProperties.Persistent = true;
noPersistentProperties = Model.CreateBasicProperties();
noPersistentProperties.Persistent = false;
}
public void Publish(byte[] msg, string exchange, string routingKey, bool persistent = true)
{
Model.BasicPublish(exchange, routingKey, persistent ? persistentProperties : noPersistentProperties, msg);
}
public void Dispose()
{
Pool.Return(this);
}
public void ForceDispose()
{
Model.Close();
Model.Dispose();
Connection.Return(this);
}
}
}