Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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# 如何向部署在Kubernetes上的特定pod发送命令?_C#_Kubernetes_.net Core_Azureservicebus - Fatal编程技术网

C# 如何向部署在Kubernetes上的特定pod发送命令?

C# 如何向部署在Kubernetes上的特定pod发送命令?,c#,kubernetes,.net-core,azureservicebus,C#,Kubernetes,.net Core,Azureservicebus,我在一个包含2个副本的容器中部署了一个微服务。所以我有两个豆荚。此微服务通过Azure服务总线从另一个服务接收命令。我的问题是我想用两个pod中的一个来检索命令。我尝试启用会话并使用SessionId,但仍然在错误的pod中接收命令。有没有办法做到这一点 在这里,我将介绍如何配置总线(使用masstransit库) 我不相信以任何方式区分副本的最佳实践,因为它们是无状态的,在pod级别没有特定的标识符,所以您无法保证以一种可靠的方式区分它们 对于像您这样的场景,您应该选择,这为pod提供了一个顺

我在一个包含2个副本的容器中部署了一个微服务。所以我有两个豆荚。此微服务通过Azure服务总线从另一个服务接收命令。我的问题是我想用两个pod中的一个来检索命令。我尝试启用会话并使用SessionId,但仍然在错误的pod中接收命令。有没有办法做到这一点

在这里,我将介绍如何配置总线(使用masstransit库)


我不相信以任何方式区分副本的最佳实践,因为它们是无状态的,在pod级别没有特定的标识符,所以您无法保证以一种可靠的方式区分它们

对于像您这样的场景,您应该选择,这为pod提供了一个顺序标识符,您可以使用它来区分它们(并保证它)。根据标识符的不同,您可以使用特殊队列(或对单个主题的订阅)来处理特定的pod

var bus = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
        {
            var host = sbc.Host(_configuration["myConnectionString"], h => { });
            sbc.ConfigureSend(x => x.UseExecute(context =>
            {
                var sessionId = EnvConstants.SessionId;
                context.SetSessionId(sessionId);
            }));
            sbc.ReceiveEndpoint(host, _configuration["myQueueName"], e =>
            {
                e.RequiresSession = true;
                e.Instance(consumer);
                e.UseContextFilter(c =>
        {
               //I tryed this filter but sends my command to the skipped queue. 
            var sameSessionId = c.SessionId() == EnvConstants.SessionId;
            return Task.FromResult(sameSessionId);
        });
            });
        });