Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
67b444ca
Commit
67b444ca
authored
Aug 07, 2023
by
刘林
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(message):添加省级消息转发
parent
2e2b9a76
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
40 deletions
+46
-40
KafkaConsumerService.java
.../com/yeejoin/amos/message/kafka/KafkaConsumerService.java
+9
-4
application-dev.properties
...ils-message/src/main/resources/application-dev.properties
+37
-36
No files found.
amos-boot-utils/amos-boot-utils-message/src/main/java/com/yeejoin/amos/message/kafka/KafkaConsumerService.java
View file @
67b444ca
...
...
@@ -40,9 +40,13 @@ public class KafkaConsumerService {
public
void
consumerSingle
(
String
message
,
Acknowledgment
ack
)
{
JSONObject
messageObj
=
JSONObject
.
fromObject
(
message
);
try
{
String
topic
=
messageObj
.
getString
(
"topic"
);
JSONObject
data
=
messageObj
.
getJSONObject
(
"data"
);
emqKeeper
.
getMqttClient
().
publish
(
topic
,
data
.
toString
().
getBytes
(
StandardCharsets
.
UTF_8
),
0
,
false
);
String
topic
=
null
;
JSONObject
data
=
null
;
if
(
messageObj
.
has
(
"topic"
)){
topic
=
messageObj
.
getString
(
"topic"
);
data
=
messageObj
.
getJSONObject
(
"data"
);
emqKeeper
.
getMqttClient
().
publish
(
topic
,
data
.
toString
().
getBytes
(
StandardCharsets
.
UTF_8
),
0
,
false
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"消息转发失败"
+
e
.
getMessage
(),
e
);
}
...
...
@@ -86,9 +90,10 @@ public class KafkaConsumerService {
if
(
Arrays
.
asList
(
"INSERT"
,
"UPDATE"
).
contains
(
type
))
{
JSONArray
array
=
jsonObject
.
getJSONArray
(
"data"
);
JSONObject
data
=
(
JSONObject
)
array
.
get
(
0
);
data
.
put
(
"
t
ype"
,
type
);
data
.
put
(
"
dbT
ype"
,
type
);
data
.
put
(
"table"
,
table
);
emqKeeper
.
getMqttClient
().
publish
(
PROVINCE_MQTT_TOPIC
,
data
.
toString
().
getBytes
(
StandardCharsets
.
UTF_8
),
0
,
false
);
log
.
info
(
"省级消息: {}"
,
data
);
}
}
}
catch
(
MqttException
e
)
{
...
...
amos-boot-utils/amos-boot-utils-message/src/main/resources/application-dev.properties
View file @
67b444ca
#
注册中心地址
#
\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740
eureka.client.service-url.defaultZone
=
http://172.16.10.216:10001/eureka/
eureka.instance.prefer-ip-address
=
true
management.endpoint.health.show-details
=
always
...
...
@@ -9,62 +9,62 @@ eureka.instance.status-page-url-path=/actuator/info
eureka.instance.metadata-map.management.api-docs
=
http://172.16.10.216:${server.port}${server.servlet.context-path}/swagger-ui.html
# kafka
集群信息
# kafka
\u96C6\u7FA4\u4FE1\u606F
spring.kafka.bootstrap-servers
=
172.16.10.215:9092
#
生产者配置
#
设置大于0的值,则客户端会将发送失败的记录重新发送 # 重试次数
#
\u751F\u4EA7\u8005\u914D\u7F6E
#
\u8BBE\u7F6E\u5927\u4E8E0\u7684\u503C\uFF0C\u5219\u5BA2\u6237\u7AEF\u4F1A\u5C06\u53D1\u9001\u5931\u8D25\u7684\u8BB0\u5F55\u91CD\u65B0\u53D1\u9001 # \u91CD\u8BD5\u6B21\u6570
spring.kafka.producer.retries
=
1
spring.kafka.producer.bootstrap-servers
=
172.16.10.215:9092
#16K
spring.kafka.producer.batch-size
=
16384
spring.kafka.producer.buffer-memory
=
33554432
#
应答级别
# acks=0
把消息发送到kafka就认为发送成功
# acks=1
把消息发送到kafka leader分区,并且写入磁盘就认为发送成功
# acks=all
把消息发送到kafka leader分区,并且leader分区的副本follower对消息进行了同步就任务发送成功
#
\u5E94\u7B54\u7EA7\u522B
# acks=0
\u628A\u6D88\u606F\u53D1\u9001\u5230kafka\u5C31\u8BA4\u4E3A\u53D1\u9001\u6210\u529F
# acks=1
\u628A\u6D88\u606F\u53D1\u9001\u5230kafka leader\u5206\u533A\uFF0C\u5E76\u4E14\u5199\u5165\u78C1\u76D8\u5C31\u8BA4\u4E3A\u53D1\u9001\u6210\u529F
# acks=all
\u628A\u6D88\u606F\u53D1\u9001\u5230kafka leader\u5206\u533A\uFF0C\u5E76\u4E14leader\u5206\u533A\u7684\u526F\u672Cfollower\u5BF9\u6D88\u606F\u8FDB\u884C\u4E86\u540C\u6B65\u5C31\u4EFB\u52A1\u53D1\u9001\u6210\u529F
spring.kafka.producer.acks
=
1
#
指定消息key和消息体的编解码方式
# #
批量处理的最大大小 单位
byte
#
\u6307\u5B9A\u6D88\u606Fkey\u548C\u6D88\u606F\u4F53\u7684\u7F16\u89E3\u7801\u65B9\u5F0F
# #
\u6279\u91CF\u5904\u7406\u7684\u6700\u5927\u5927\u5C0F \u5355\u4F4D
byte
# batch-size: 4096
# #
发送延时,当生产端积累的消息达到batch-size或接收到消息linger.ms后,生产者就会将消息提交给
kafka
# #
\u53D1\u9001\u5EF6\u65F6,\u5F53\u751F\u4EA7\u7AEF\u79EF\u7D2F\u7684\u6D88\u606F\u8FBE\u5230batch-size\u6216\u63A5\u6536\u5230\u6D88\u606Flinger.ms\u540E,\u751F\u4EA7\u8005\u5C31\u4F1A\u5C06\u6D88\u606F\u63D0\u4EA4\u7ED9
kafka
# buffer-memory: 33554432
# #
客户端
ID
# #
\u5BA2\u6237\u7AEF
ID
# client-id: hello-kafka
# #
消息压缩:none、lz4、gzip、snappy,默认为 none。
# #
\u6D88\u606F\u538B\u7F29\uFF1Anone\u3001lz4\u3001gzip\u3001snappy\uFF0C\u9ED8\u8BA4\u4E3A none\u3002
# compression-type: gzip
spring.kafka.producer.key-serializer
=
org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer
=
org.apache.kafka.common.serialization.StringSerializer
#
消费者组
#
当kafka中没有初始offset或offset超出范围时将自动重置
offset
# earliest:
重置为分区中最小的
offset
# latest:
重置为分区中最新的offset(消费分区中新产生的数据
)
# none:
只要有一个分区不存在已提交的offset,就抛出异常
#
\u6D88\u8D39\u8005\u7EC4
#
\u5F53kafka\u4E2D\u6CA1\u6709\u521D\u59CBoffset\u6216offset\u8D85\u51FA\u8303\u56F4\u65F6\u5C06\u81EA\u52A8\u91CD\u7F6E
offset
# earliest:
\u91CD\u7F6E\u4E3A\u5206\u533A\u4E2D\u6700\u5C0F\u7684
offset
# latest:
\u91CD\u7F6E\u4E3A\u5206\u533A\u4E2D\u6700\u65B0\u7684offset(\u6D88\u8D39\u5206\u533A\u4E2D\u65B0\u4EA7\u751F\u7684\u6570\u636E
)
# none:
\u53EA\u8981\u6709\u4E00\u4E2A\u5206\u533A\u4E0D\u5B58\u5728\u5DF2\u63D0\u4EA4\u7684offset,\u5C31\u629B\u51FA\u5F02\u5E38
spring.kafka.consumer.group-id
=
zhTestGroup
spring.kafka.consumer.bootstrap-servers
=
172.16.10.215:9092
spring.kafka.consumer.enable-auto-commit
=
false
#
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
# #
自动提交的频率 单位
ms
#
\u5F53\u5404\u5206\u533A\u4E0B\u6709\u5DF2\u63D0\u4EA4\u7684offset\u65F6\uFF0C\u4ECE\u63D0\u4EA4\u7684offset\u5F00\u59CB\u6D88\u8D39\uFF1B\u65E0\u63D0\u4EA4\u7684offset\u65F6\uFF0C\u4ECE\u5934\u5F00\u59CB\u6D88\u8D39
# #
\u81EA\u52A8\u63D0\u4EA4\u7684\u9891\u7387 \u5355\u4F4D
ms
# auto-commit-interval: 1000
# #
批量消费最大数量
# #
\u6279\u91CF\u6D88\u8D39\u6700\u5927\u6570\u91CF
# max-poll-records: 100
spring.kafka.consumer.auto-offset-reset
=
earliest
spring.kafka.consumer.key-deserializer
=
org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer
=
org.apache.kafka.common.serialization.StringDeserializer
#
当每一条记录被消费者监听器(ListenerConsumer)处理之后提交
#
\u5F53\u6BCF\u4E00\u6761\u8BB0\u5F55\u88AB\u6D88\u8D39\u8005\u76D1\u542C\u5668\uFF08ListenerConsumer\uFF09\u5904\u7406\u4E4B\u540E\u63D0\u4EA4
# RECORD
#
当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后提交
#
\u5F53\u6BCF\u4E00\u6279poll()\u7684\u6570\u636E\u88AB\u6D88\u8D39\u8005\u76D1\u542C\u5668\uFF08ListenerConsumer\uFF09\u5904\u7406\u4E4B\u540E\u63D0\u4EA4
# BATCH
#
当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,距离上次提交时间大于TIME时提交
#
\u5F53\u6BCF\u4E00\u6279poll()\u7684\u6570\u636E\u88AB\u6D88\u8D39\u8005\u76D1\u542C\u5668\uFF08ListenerConsumer\uFF09\u5904\u7406\u4E4B\u540E\uFF0C\u8DDD\u79BB\u4E0A\u6B21\u63D0\u4EA4\u65F6\u95F4\u5927\u4E8ETIME\u65F6\u63D0\u4EA4
# TIME
#
当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后,被处理record数量大于等于COUNT时提交
#
\u5F53\u6BCF\u4E00\u6279poll()\u7684\u6570\u636E\u88AB\u6D88\u8D39\u8005\u76D1\u542C\u5668\uFF08ListenerConsumer\uFF09\u5904\u7406\u4E4B\u540E\uFF0C\u88AB\u5904\u7406record\u6570\u91CF\u5927\u4E8E\u7B49\u4E8ECOUNT\u65F6\u63D0\u4EA4
# COUNT
# TIME |
COUNT 有一个条件满足时提交
# TIME |
\u3000COUNT\u3000\u6709\u4E00\u4E2A\u6761\u4EF6\u6EE1\u8DB3\u65F6\u63D0\u4EA4
# COUNT_TIME
#
当每一批poll()的数据被消费者监听器(ListenerConsumer)处理之后, 手动调用Acknowledgment.acknowledge()后提交
#
\u5F53\u6BCF\u4E00\u6279poll()\u7684\u6570\u636E\u88AB\u6D88\u8D39\u8005\u76D1\u542C\u5668\uFF08ListenerConsumer\uFF09\u5904\u7406\u4E4B\u540E, \u624B\u52A8\u8C03\u7528Acknowledgment.acknowledge()\u540E\u63D0\u4EA4
# MANUAL
#
手动调用Acknowledgment.acknowledge()后立即提交,一般使用这种
#
\u624B\u52A8\u8C03\u7528Acknowledgment.acknowledge()\u540E\u7ACB\u5373\u63D0\u4EA4\uFF0C\u4E00\u822C\u4F7F\u7528\u8FD9\u79CD
# MANUAL_IMMEDIATE
spring.kafka.listener.ack-mode
=
manual_immediate
...
...
@@ -80,20 +80,20 @@ emqx.client-password=public
emqx.max-inflight
=
1000
#
下面个配置默认站端 中心级系统的时候注释掉上边 放开下边
#
站端配置
#
需要监听得kafka消息主题 根据是否是中心极和站端选择需要监听得主题进行配置
#
\u4E0B\u9762\u4E2A\u914D\u7F6E\u9ED8\u8BA4\u7AD9\u7AEF \u4E2D\u5FC3\u7EA7\u7CFB\u7EDF\u7684\u65F6\u5019\u6CE8\u91CA\u6389\u4E0A\u8FB9 \u653E\u5F00\u4E0B\u8FB9
#
\u7AD9\u7AEF\u914D\u7F6E
#
\u9700\u8981\u76D1\u542C\u5F97kafka\u6D88\u606F\u4E3B\u9898 \u6839\u636E\u662F\u5426\u662F\u4E2D\u5FC3\u6781\u548C\u7AD9\u7AEF\u9009\u62E9\u9700\u8981\u76D1\u542C\u5F97\u4E3B\u9898\u8FDB\u884C\u914D\u7F6E
#kafka.topics=JKXT2BP-XFZX-Topic
#
需要监听得eqm消息主题 根据是否是中心极和站端选择需要监听得主题进行配置
emq.iot.created,
#
\u9700\u8981\u76D1\u542C\u5F97eqm\u6D88\u606F\u4E3B\u9898 \u6839\u636E\u662F\u5426\u662F\u4E2D\u5FC3\u6781\u548C\u7AD9\u7AEF\u9009\u62E9\u9700\u8981\u76D1\u542C\u5F97\u4E3B\u9898\u8FDB\u884C\u914D\u7F6E
emq.iot.created,
#emq.topic=emq.xf.created,emq.iot.created,emq.patrol.created,emq.sign.created,emq.bussSign.created,emq.user.created,emq.risk.created,emq.mcb.zxj
##
中心级配置配置
##
需要监听得kafka消息主题 根据是否是中心极和站端选择需要监听得主题进行配置
##
\u4E2D\u5FC3\u7EA7\u914D\u7F6E\u914D\u7F6E
##
\u9700\u8981\u76D1\u542C\u5F97kafka\u6D88\u606F\u4E3B\u9898 \u6839\u636E\u662F\u5426\u662F\u4E2D\u5FC3\u6781\u548C\u7AD9\u7AEF\u9009\u62E9\u9700\u8981\u76D1\u542C\u5F97\u4E3B\u9898\u8FDB\u884C\u914D\u7F6E
kafka.topics
=
JKXT2BP-XFYY-Topic
#
##
需要监听得eqm消息主题 根据是否是中心极和站端选择需要监听得主题进行配置
emq.iot.created,
emq.topic
=
ccs-user-login-info,sync.execute,data/mcb/warning
##
\u9700\u8981\u76D1\u542C\u5F97eqm\u6D88\u606F\u4E3B\u9898 \u6839\u636E\u662F\u5426\u662F\u4E2D\u5FC3\u6781\u548C\u7AD9\u7AEF\u9009\u62E9\u9700\u8981\u76D1\u542C\u5F97\u4E3B\u9898\u8FDB\u884C\u914D\u7F6E
emq.iot.created,
emq.topic
=
ccs-user-login-info,sync.execute,data/mcb/warning
,emq.risk.qrcode.put,emq.risk.qrcode.clean
queue.kafka.topics
=
null
kafka.auto-startup
=
false
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment