【问题标题】:Azure service bus queue partitioning based on Customer ID基于客户 ID 的 Azure 服务总线队列分区
【发布时间】:2020-12-04 21:34:30
【问题描述】:

我正在尝试根据我的 Json 属性上的客户 ID 参数创建多个分区。我该怎么做?

【问题讨论】:

  • 我有一种预感,我知道您提出这个要求的原因,但在发布如何射中自己的脚之前想澄清一下。您想通过将分区键设置为客户 ID 来完成什么?
  • 嗨,有什么更新吗?如果我的回答回答了你的问题,你能mark it as the answer 结束这个问题吗?谢谢。:)

标签: azure azure-functions azureservicebus


【解决方案1】:

由于您没有具体说明您使用的语言,所以我假设您使用的是 java。

首先,在 azure 上创建一个服务总线队列。

并使用以下依赖项:(我是基于Maven的。)

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
     <groupId>com.azure</groupId>
      <artifactId>azure-messaging-servicebus</artifactId>
      <version>7.0.0</version>
    </dependency>
    <dependency>
     <groupId>javax.json</groupId>
      <artifactId>javax.json-api</artifactId>
      <version>1.1.4</version>
    </dependency>
    <dependency>
     <groupId>org.glassfish</groupId>
      <artifactId>javax.json</artifactId>
      <version>1.1.4</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>1.7.5</version>
    </dependency>
  </dependencies>

这是代码:

package bowmantest;
import com.azure.messaging.servicebus.*;
import com.azure.messaging.servicebus.models.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;

import javax.json.JsonObject;
import javax.json.Json;

import java.util.Arrays;
import java.util.List;
/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        
        //Create a json and get the value.
        JsonObject testjson = Json.createObjectBuilder()
        .add("CustomID", "bowmantestPK").build();
        //String str = testjson.get("CustomID").toString();
        String str = testjson.getString("CustomID");

        String connectionString = "Endpoint=sb://bowman1012.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=X/NHgQ4AQxul6YlMsUofD+JNE20Tovnzx3g2gDt8qyY=";
        String queueName = "testbowman";
        
        // create a Service Bus Sender client for the queue 
        ServiceBusSenderClient senderClient = new ServiceBusClientBuilder()
        .connectionString(connectionString)
        .sender()
        .queueName(queueName)
        .buildClient();


        ServiceBusMessage servicebusmessage = new ServiceBusMessage("Hello, World!");
        servicebusmessage.setPartitionKey(str);

        // send one message to the queue
        senderClient.sendMessage(servicebusmessage);
        System.out.println("Sent a single message to the queue: " + queueName);   
    }
}

(以上为Console app,功能类似。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2020-12-17
    相关资源
    最近更新 更多