首页 > 解决方案 > 基于客户 ID 的 Azure 服务总线队列分区

问题描述

我正在尝试根据我的 Json 属性上的客户 ID 参数创建多个分区。我怎样才能做到这一点 ?

标签: azureazure-functionsazureservicebus

解决方案


由于您没有具体说明您使用的语言,所以我假设您使用的是 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);   
    }
}

(上面是控制台应用,功能类似。)


推荐阅读