Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AMQLite能否充当WindowsAzure.ServiceBus客户端的服务器?_C#_Testing_Amqp_Azureservicebus - Fatal编程技术网

C# AMQLite能否充当WindowsAzure.ServiceBus客户端的服务器?

C# AMQLite能否充当WindowsAzure.ServiceBus客户端的服务器?,c#,testing,amqp,azureservicebus,C#,Testing,Amqp,Azureservicebus,我想对一个消息传递客户端库进行黑盒测试,该库使用nuget包()向Microsoft ServiceBus队列发送和接收消息 我的目标是为消息传递客户端库创建集成测试,但不与实际的Microsoft Service Bus服务器通信 查看库,我希望可以使用amqplite创建一个AMQP主机,并将消息传递客户端库配置为与该主机通信,而不是与实际的Microsoft服务总线通信 这是我使用amqplite定制的AMQP主机: public class LinkProcessor : ILinkPr

我想对一个消息传递客户端库进行黑盒测试,该库使用nuget包()向Microsoft ServiceBus队列发送和接收消息

我的目标是为消息传递客户端库创建集成测试,但不与实际的Microsoft Service Bus服务器通信

查看库,我希望可以使用amqplite创建一个AMQP主机,并将消息传递客户端库配置为与该主机通信,而不是与实际的Microsoft服务总线通信

这是我使用amqplite定制的AMQP主机:

public class LinkProcessor : ILinkProcessor
{
    public void Process(AttachContext attachContext)
    {
        Console.WriteLine("LinkProcessor.Attach!");
    }
}


var containerHost = new ContainerHost(new Uri("amqp://localhost:9876/"));
containerHost.RegisterLinkProcessor(new LinkProcessor());
containerHost.Open();
我在containerHost上注册了一个ILinkProcessor,这样我就可以在控制台上看到任何连接尝试(基于我对AMQP/AMQLite的有限理解,我认为ILinkProcessor就是这样做的)

下面的AMQP客户端可以连接,服务器进程在控制台上输出“LinkProcessor.Attach!”

async Task Main()
{
    await SendMessage("q2", "hello world");
}

async Task SendMessage(string queue, string message)
{
    var connection = await Connection.Factory.CreateAsync(new Address("amqp://localhost:9876/"));
    var session = new Session(connection);

    var msg = new Message(message);
    var sender = new SenderLink(session, "sender-link", queue);
    await sender.SendAsync(msg);
    await sender.CloseAsync();
    await session.CloseAsync();
    await connection.CloseAsync();
}
返回要测试的消息传递客户端库:

  • 库是使用连接字符串配置的,工作连接字符串如下所示(我假设连接字符串格式是WindowsAzure.ServiceBus定义的格式):

    Endpoint=sb://xxx/yyy;发送点=https://nnn:NNNN/xxx;RuntimePort=NNNN;ManagementPort=NNNN;OAuthUsername=xxx;OAuthPassword=yyy

  • 我将配置字符串更改为以下内容:

    端点=amqp://localhost:9876/q2

  • 运行测试客户端时,会发生以下情况:

    • 客户端引发异常:您试图创建到不支持.Net框架的服务的通道
    • 我在AMQLite主机端没有看到任何活动,即控制台上没有“LinkProcessor.Attach!”消息
问题:

  • 我想实现的目标可能吗?即,是否有方法配置AMQLite主机,以便它可以接受来自WindowsAzure.ServiceBus客户端的连接

这是可能的,但需要在设置AMQLite侦听器方面做一些工作。请在amqpnetlite github回购协议下找到更多详细信息。太好了,非常感谢!github问题的链接:这是可能的,但需要在设置amqplite侦听器方面做一些工作。请在amqpnetlite github回购协议下找到更多详细信息。太好了,非常感谢!链接到github问题: