以下问题:
我正在开发一个使用 RabbitMQ 连接到 API 的 WCF 服务。我们使用 spring 作为 DI 容器。
我们做了一个消费者类(一些用于rabbit MQ + logging的自定义逻辑)
精简版:
public class Consumer : DefaultBasicConsumer
{
public Consumer(IModel channel)
: base(channel)
{}
}
我们有一个 ConnectionManager 类:
public class ConnectionManager
{
public IModel Channel { get; set; }
public IConnection Connection { get; set; }
private readonly ConnectionFactory _connectionFactory;
public ConnectionManager()
{
_connectionFactory = SetupConnectionFactory();
Connection = _connectionFactory.CreateConnection();
Channel = Connection.CreateModel();
}
}
现在的问题是,在使用 Spring.NET 连接所有东西时。我们想将 ConnectionManager 类的 Channel 属性注入到 Consumer 构造函数中。
到目前为止的 Spring 配置(精简):
<spring>
<context>
<resource uri="config://spring/objects"/>
</context>
<object name="connectionManager" type="Epex.ConnectionManager, EpexData" singleton="true"/>
<object name="consumer" type="Epex.Consumer, EpexData">
<constructor-arg ref="Do something funky here"/>
</object>
</spring>
那么我在 Do Something funky 上放什么?
我们还可以在消费者中重写和注入 ConnectionManager(最后一个选项)