当系统需要高性能以及扩展性的时候,单个broker已经不满足我们的需求了,我们可以把多个broker连接起来,来达到我们需要的效果。ActiveMQ支持双向的网络连接通道,如下图所示
多个broker之间的连接,有两种方式,一个是静态网络连接,一个是动态网络连接。
静态网络连接
ActiveMQ提供了多种协议,配置transportConnectors的时候,根据不同的协议配置uri,比如:
当系统需要高性能以及扩展性的时候,单个broker已经不满足我们的需求了,我们可以把多个broker连接起来,来达到我们需要的效果。ActiveMQ支持双向的网络连接通道,如下图所示
多个broker之间的连接,有两种方式,一个是静态网络连接,一个是动态网络连接。
ActiveMQ提供了多种协议,配置transportConnectors的时候,根据不同的协议配置uri,比如:
消息的几种类型,包括TextMessage、StreamMessage、ObjectMessage、MapMessage、BytesMessage、BlobMessage。属性包括boolean、byte、double、float、int、long、object、short、string。下面看看在代码中是怎么发送和接收的。
1 | public static void main(String[] args) { |
索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。
索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。
索引底层数据结构存在很多种类型,常见的索引结构有: B 树, B+树 和 Hash、红黑树。在 MySQL 中,无论是 Innodb 还是 MyIsam,都使用了 B+树作为索引结构。
优点:
官方文章参考: how-should-i-implement-request-response-with-jms
在生产过程中,我们有可能需要消费者消费完后,把消息发给对应的生产者。
这种请求-响应的最佳方法是在启动时为每个生产者创建一个临时队列和使用者,将每个消息上的JMSReplyTo属性设置为临时队列,然后在每个消息上使用correlationID将请求消息与响应消息关联起来。这避免了为每个请求创建和关闭使用者的开销(这是昂贵的)。这也意味着你可以共享同一个生产者。
消费者消费完消息后,通过JMSReplyTo属性和correlationID将消息返回给生产者。
流程图如下:
步骤如下:
代码如下:
1 | public static void main(String[] args) { |
ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,提供了高可用、高性能、可伸缩性等。
在分布式系统设计架构中,系统之间的偶尔是非常重要的,消息中间件可以用来解耦。RPC框架也可以用来解耦,但两个有不一样的地方:
RPC框架:
如上图所示,在RPC框架中,One应用通过网络直接调用Two应用,这就要保证Two应用是可用的,如果Two应用是不可用的,那这个调用就失败了。
消息中间件:
如上图所示,One应用把消息推送给消息中间件,Two应用再从消息中间件接收消息,在这个过程中,One应用和Two应用,是可以不知道对方的状态(比如是否不可用,用哪些语言),甚至不关心发送消息或者处理消息的是谁,这种情况下,两个应用的耦合度就不会那么高了。
通过设置消息的属性来的。
属性值 | 描述 | |
---|---|---|
Delivery mode | 是否持久化,1为不持久化,2为持久化 | |
Type | 应用程序特定的消息类型 | |
Headers | 用户自定义的其他属性 | |
Content type | 阅读更多
1 | Map<String, Object> args = new HashMap<String, Object>(); |
主要介绍Java 9平台模块系统(JPMS: Java 9 Platform Module System),它是Java自诞生以来最重要的新软件工程技术。是模块化项目Jigsaw的产物,帮助开发人员在构建、维护和扩展软件系统(尤其是大型系统)时提高生产力。
Java SE自1995年诞生以来,从用于资源受限设备的小型应用程序(如物联网(IoT)和其他嵌入式设备中的应用程序)到关键业务和关键任务系统等大型应用程序,一应俱全。随着发展,java有大量的遗留代码,但是直到现在,Java平台一直提供一站式的解决方案。但很多时候很多功能并没有被广泛使用,但是Java平台也没能使用模块化,因此诞生了Project Jigsaw^1。