You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java为Azure Service Bus队列中的消息添加延迟?

使用Java为Azure Service Bus队列消息添加延迟

发送延迟消息

通过Azure Service Bus的Java SDK,可在发送消息时指定预定入队时间,实现消息延迟消费。

依赖配置(Maven)

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-servicebus</artifactId>
    <version>7.17.0</version>
</dependency>

发送示例代码

import com.azure.messaging.servicebus.ServiceBusClientBuilder;
import com.azure.messaging.servicebus.ServiceBusSenderClient;
import com.azure.messaging.servicebus.ServiceBusMessage;
import java.time.Duration;
import java.time.OffsetDateTime;

public class DelayedMessageSender {
    public static void main(String[] args) {
        String connectionString = "你的Service Bus连接字符串";
        String queueName = "目标队列名称";

        try (ServiceBusSenderClient senderClient = new ServiceBusClientBuilder()
                .connectionString(connectionString)
                .sender()
                .queueName(queueName)
                .buildClient()) {

            // 设置延迟时长:示例为延迟5分钟
            OffsetDateTime scheduledEnqueueTime = OffsetDateTime.now().plus(Duration.ofMinutes(5));

            // 发送延迟消息
            senderClient.scheduleMessage(
                new ServiceBusMessage("需要延迟处理的消息内容"),
                scheduledEnqueueTime);

            System.out.println("消息已安排延迟发送,预定入队时间:" + scheduledEnqueueTime);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Azure Functions消费延迟消息

配置Service Bus队列触发器的函数应用,会在消息到达预定入队时间后自动触发消费逻辑。

函数依赖配置(Maven)

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-messaging-servicebus</artifactId>
    <version>7.17.0</version>
</dependency>

消费示例代码

import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.ServiceBusQueueTrigger;

public class DelayedMessageConsumer {

    @FunctionName("ProcessDelayedMessage")
    public void run(
            @ServiceBusQueueTrigger(name = "message", queueName = "目标队列名称",
                    connection = "ServiceBusConnectionString") String message,
            final ExecutionContext context) {
        context.getLogger().info("收到延迟消息:" + message);
        // 在此添加你的业务处理逻辑
    }
}

关键注意事项

  • Azure Service Bus允许的最大延迟时长为7天
  • 确保连接字符串拥有队列的发送和接收权限
  • 函数应用的ServiceBusConnectionString需要在应用设置中配置对应的Service Bus连接字符串

内容的提问来源于stack exchange,提问作者dev333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:20:39