ActiveMq(二)

本文详细介绍了ActiveMQ的多个关键概念,包括签收机制、Broker的内嵌方式、与SpringBoot的整合、传输协议(如TCP、NIO)、持久化策略(KahaDB和JDBC)、集群配置以及高可用策略。还探讨了消息的异步投递、延迟与定时投递、消费重试机制和死信队列,并提出了实现幂等性和保证消息可靠传输的方法。
摘要由CSDN通过智能技术生成

1.签收

在这里插入图片描述

public interface Session extends Runnable {
    
    int AUTO_ACKNOWLEDGE = 1;   // 自动签收
    int CLIENT_ACKNOWLEDGE = 2;  // 客户端确认签收
    int DUPS_OK_ACKNOWLEDGE = 3; // 自动批量进行签收
    int SESSION_TRANSACTED = 0;  // 事务提交就签收
    
}

注意:事务会话中,如果一个事务提交成功,这个时候就签收!事务混滚,消息就会被再次传送。

没有事务的情况下,如果是 客户端确认签收,那则需要手动签收。

一般用自动 手动

message.acknowledge(); // 消息确认签收

2.Broker

Broker:将 ActvieMQ … 以代码的形式内嵌到我们程序中。保证随时可以启动进行使用。
官网地址:http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.0</version>
</dependency>

代码

public class EmbedBroker {
    public static void main(String[] args) throws Exception {
        // 1.创建服务
        BrokerService broker = new BrokerService();

        // 2、配置连接地址
        // jmx是java的一个新框架
        // 允许将我们所有的资源(软件和硬件)封装一个Java对象,直接暴露在服务中即可使用
        broker.setUseJmx(true);
        broker.addConnector("tcp://localhost:61616");

        // 3、启动
        broker.start();
    }
}

3.整合SpringBoot

1.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.配置yaml

server:
  port: 9000
spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616
    user: admin
    password: admin
  jms:
    pub-sub-domain: false # false 队列,  true 主题

myqueue: coding-queue

比较

server.port=9090
spring.activemq.broker-url=tcp://127.0.0.1:61616
# 在考虑结束之前等待的时间
#spring.activemq.close-timeout=15s
# 默认代理URL是否应该在内存中。如果指定了显式代理,则忽略此值。
spring.activemq.in-memory=true 
# 是否在回滚回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。
spring.activemq.non-blocking-redelivery=false
# 等待消息发送响应的时间。设置为0等待永远。
spring.activemq.send-timeout=0
#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置下面配置
spring.jms.pub-sub-domain=true
#账号
spring.activemq.user=admin
# 密码
spring.activemq.password=admin
# 是否信任所有包
#spring.activemq.packages.trust-all=
# 要信任的特定包的逗号分隔列表(当不信任所有包时)
#spring.activemq.packages.trusted=
# 当连接请求和池满时是否阻塞。设置false会抛“JMSException异常”。
#spring.activemq.pool.block-if-full=true
# 如果池仍然满,则在抛出异常前阻塞时间。
#spring.activemq.pool.block-if-full-timeout=-1ms
# 是否在启动时创建连接。可以在启动时用于加热池。
#spring.activemq.pool.create-connection-on-startup=true
# 是否用Pooledconnectionfactory代替普通的ConnectionFactory。
#spring.activemq.pool.enabled=false
# 连接过期超时。
#spring.activemq.pool.expiry-timeout=0ms
# 连接空闲超时
#spring.activemq.pool.idle-timeout=30s
# 连接池最大连接数
#spring.activemq.pool.max-connections=1
# 每个连接的有效会话的最大数目。
#spring.activemq.pool.maximum-active-session-per-connection=500
# 当有"JMSException"时尝试重新连接
#sp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值