最新activemq持久订阅工作原理,腾讯T3面试官透露

总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

大厂Java架构核心笔记(适合中高级程序员阅读):

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

SubscriptionKey key = new SubscriptionKey(clientId, subscriptionName);

DurableTopicSubscription sub = durableSubscriptions.get(key);**

if (sub != null) {

if (sub.isActive()) {

throw new JMSException("Durable consumer is in use for client: " + clientId + " and subscriptionName: " + subscriptionName);

}

// 看下该订阅者的消息筛选项是否变化

if (hasDurableSubChanged(info, sub.getConsumerInfo())) {

// 如果变化了那么首先移除该订阅者对应的DurableTopicSubscription,然后再追加最新创建的DurableTopicSubscription

durableSubscriptions.remove(key);

destinationsLock.readLock().lock();

try {

for (Destination dest : destinations.values()) {

//Account for virtual destinations

if (dest instanceof Topic){

Topic topic = (Topic)dest;

topic.deleteSubscription(context, key);

}

}

} finally {

destinationsLock.readLock().unlock();

}

**super.removeConsumer(context, sub.getConsumerInfo());

super.addConsumer(context, info);

sub = durableSubscriptions.get(key);**

} else {

// 如果消息筛选项没有变化,那么直接将刚恢复连接的订阅者id与之前的DurableTopicSubscription 关联起来

if (sub.getConsumerInfo().getConsumerId() != null) {

subscriptions.remove(sub.getConsumerInfo().getConsumerId());

}

subscriptions.put(info.getConsumerId(), sub);

}

} else {

super.addConsumer(context, info);

sub = durableSubscriptions.get(key);

if (sub == null) {

throw new JMSException("Cannot use the same consumerId: " + info.getConsumerId() + " for two different durable subscriptions clientID: " + key.getClientId()

+ " subscriberName: " + key.getSubscriptionName());

}

}

sub.activate(usageManager, context, info, broker);

return sub;

} else {

return super.addConsumer(context, info);

}

}

上面代码是订阅者连接到消息提供者时的处理代码,下面看下更核心的持久订阅与消息提供者断开连接时的处理:

@Override

public void removeConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {

if (info.isDurable()) {

SubscriptionKey key = new SubscriptionKey(context.getClientId(), info.getSubscriptionName());

Kafka实战笔记

关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图

image.png

  • Kafka入门
  • 为什么选择Kafka
  • Karka的安装、管理和配置

image.png

  • Kafka的集群
  • 第一个Kafka程序
  • image.png

afka的生产者

image.png

  • Kafka的消费者
  • 深入理解Kafka
  • 可靠的数据传递

image.png

image.png

  • Spring和Kalka的整合
  • Sprinboot和Kafka的整合
  • Kafka实战之削峰填谷
  • 数据管道和流式处理(了解即可)

image.png

  • Kafka实战之削峰填谷

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值