SPRING BOOT+ELASTICSEARCH+RABBITMQ
来源:互联网 发布:手机淘宝开店在哪里 编辑:程序博客网 时间:2024/04/30 13:46
- 直接进入正题 构思的流程图:
. 安装RABBITMQ
echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.listwget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -sudo apt-get updatesudo apt-get install rabbitmq-serversudo rabbitmqctl add_user admin admin sudo rabbitmqctl set_user_tags admin administratorsudo rabbitmq-plugins enable rabbitmq_managementhttp://192.168.10.69:15672
. 安装elasticSearch
注:spring-boot-starter-data-elasticsearch不支持高版本es采用2.4.4版本~ 另外es自身不带可视化页面,需要安装head~
https://www.elastic.co/products/elasticsearch download debdpkg -i elasticsearch-2.4.4.deb/etc/init.d/elasticsearch start head:cd elasticsearch-2.4.4/bin/plugin/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-headhttp://192.168.10.69:9200/_plugin/head/
. 最繁琐的部署环节已经完成 踩了无数个坑 心累~
接下来首先在主项目配置rabbit provider
amqp-client-3.5.4.jarspring-amqp-1.5.6.RELEASE.jar
<!-- mq start --><!-- connection --><rabbit:connection-factory id="connectionFactory" host="${mq.host}" username="${mq.username}" password="${mq.password}" port="${mq.port}" virtual-host="${mq.vhost}" /><rabbit:admin connection-factory="connectionFactory" id="amqpAdmin" /><!-- json convert --><bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" /><!-- es queue --><rabbit:queue id="es_queue" name="es_queue" durable="true" auto-delete="false" exclusive="false" /><!-- exchange --><rabbit:direct-exchange name="es_exchange" id="es_exchange" durable="true" auto-delete="false"> <rabbit:bindings> <rabbit:binding queue="es_queue" key="es_queue" /> </rabbit:bindings></rabbit:direct-exchange><!-- template --><rabbit:template id="amqpTemplate" exchange="es_exchange" connection-factory="connectionFactory" message-converter="jsonMessageConverter"/><!-- mq end -->
@Servicepublic class EsMqServiceImpl implements EsMqService { @Autowired private AmqpTemplate amqpTemplate; @Override public void pushToMessageQueue(String exchange, String route, String message) { amqpTemplate.convertAndSend(exchange, route, message); }}
rabbitmq还是值得一学的,稍微看了下《RabbitMQ实战 高效部署分布式消息队列》,看到第四章实在看不下去了,有点涩,又缺乏实战的机会。但感觉基本概念理解了,平时操作也够用了。
. 搜索项目搭建
这里使用SPRING-BOOT代替SPRING 2个原因:1.SPRING-BOOT实在是方便2.是因为自己想实战下新建方法: 1.STS插件2.http://projects.spring.io/spring-boot/
.pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <!-- ES --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <!-- RabbitMQ --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
.application.properties
spring.application.name=elasticsearch#mqspring.rabbitmq.host=localhostspring.rabbitmq.port=5672spring.rabbitmq.virtual-host=panchenspring.rabbitmq.username=panchenspring.rabbitmq.password=panchen#esspring.data.elasticsearch.cluster-nodes=localhost:9300spring.data.elasticsearch.cluster-name=elasticsearchspring.data.elasticsearch.repositories.enabled=true
.entity
/** * @Field :FieldType type() default FieldType.Auto;#自动检测属性的类型 FieldIndex index() * default FieldIndex.analyzed;#默认情况下分词 DateFormat format() default * DateFormat.none; String pattern() default ""; boolean store() default * false;#默认情况下不存储原文 String searchAnalyzer() default "";#指定字段搜索时使用的分词器 * String indexAnalyzer() default "";#指定字段建立索引时指定的分词器 String[] * ignoreFields() default {};#如果某个字段需要被忽略 boolean includeInParent() * default false; 不加则默认值 * @Document: 索引库命名 / 类型 / 分区数 / 每个分区的备份数 / 刷新间隔 / 文件存储类型 */@Document(indexName = "userinfo_index", type = "userInfo", shards = 5, replicas = 1, refreshInterval = "-1", indexStoreType = "fs")public class UserInfo implements Serializable { private static final long serialVersionUID = 551589397625941750L; @Id private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static long getSerialversionuid() { return serialVersionUID; } @Override public String toString() { return "UserInfo [id=" + id + ", name=" + name + "]"; }}
.repository ~~ dao
/** * 接口中自定义方法,在方法名中包含T中字段名 查询关键字包括find…By, read…By, query…By, count…By, and * get…By,And and Or连接 泛型的参数分别是实体类型和主键类型 * * @author pc */public interface UserInfoRepository extends ElasticsearchRepository<UserInfo, Long> {}
. test
@SpringBootApplication//这个注解是个大坑!!!@EnableElasticsearchRepositories@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = CompanyElasticsearchApplication.class)public class SearchRepositoryTest { @Autowired // spring Boot默认会扫描启动类同包以及子包下的注解 private UserInfoRepository userInfoRepository; @Test public void test() { System.out.println("start"); UserInfo userInfo=new UserInfo(); userInfo.setId(1l); userInfo.setName("潘晨"); System.out.println(userInfoRepository.save(userInfo)); System.out.println("新增成功"); System.out.println(userInfoRepository.count()); System.out.println("查询成功"); System.out.println("end"); }}
. OK!
阅读全文
1 0
- SPRING BOOT+ELASTICSEARCH+RABBITMQ
- spring-boot 集成 rabbitmq
- Spring boot集成RabbitMQ
- spring boot集成rabbitmq
- spring boot+RabbitMQ
- Spring Boot RabbitMQ 集成
- Spring Boot RabbitMQ Exchange
- spring-boot 集成 rabbitmq
- Spring Boot 集成RabbitMQ
- Spring Boot 集成RabbitMQ
- rabbitMQ配置spring boot
- spring-boot 集成 rabbitmq
- Spring Boot整合RabbitMQ
- spring boot rabbitmq学习
- Spring Boot + Elasticsearch
- Spring Boot中使用RabbitMQ
- Spring Boot中使用RabbitMQ
- Spring Boot中使用RabbitMQ
- QT学习之路:从入门到精通
- 自定义UITableViewCell选中Subviews(例如UILabel)背景色发生改变
- 约数的个数——清华大学机试真题
- 海量数据处理算法:Bloom Filter[转]
- ListView 的简单实现与优化并实现share动画Activity的跳转
- SPRING BOOT+ELASTICSEARCH+RABBITMQ
- Python012异常捕获
- STL之vector学习笔记
- Git-命令行-我与忽略文件 .gitignore 的斗智斗勇
- AWK说明-及语法格式。
- C 语言中 setjmp 和 longjmp
- PagerAdapter使用notifyDataSetChanged 但是视图并为改变的原因。
- spring内置ContextRefreshedEvent事件
- ArgumentError: multiline anchors (^ or $)