Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
caopu16
whatsmars
提交
933a6d8f
W
whatsmars
项目概览
caopu16
/
whatsmars
与 Fork 源项目一致
Fork自
武汉红喜 / whatsmars
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
whatsmars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
933a6d8f
编写于
5月 27, 2020
作者:
武汉红喜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
数据类型转换优化
上级
6b42e962
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
27 addition
and
14 deletion
+27
-14
whatsmars-mq/rocketmq-spring-boot-starter/README.md
whatsmars-mq/rocketmq-spring-boot-starter/README.md
+2
-0
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/annotation/RocketMQMessageListener.java
...mq/spring/starter/annotation/RocketMQMessageListener.java
+2
-0
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/core/DefaultRocketMQListenerContainer.java
...spring/starter/core/DefaultRocketMQListenerContainer.java
+15
-1
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/core/RocketMQTemplate.java
...apache/rocketmq/spring/starter/core/RocketMQTemplate.java
+8
-2
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer.java
...g/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer.java
+0
-2
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer2.java
.../hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer2.java
+0
-2
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer3.java
.../hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer3.java
+0
-3
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer4.java
.../hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer4.java
+0
-2
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer5.java
.../hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer5.java
+0
-2
未找到文件。
whatsmars-mq/rocketmq-spring-boot-starter/README.md
浏览文件 @
933a6d8f
...
...
@@ -4,6 +4,8 @@
-
发送延时消息方法参数优化(魔法参数改为枚举)
-
优化getMessageType方法,支持 MyConsumer extends AbstractConsumer implements RocketMQListener
<br>
(官方只支持MyConsumer implements RocketMQListener)
-
RocketMQTemplate方法重载(加入keys)
-
让@RocketMQMessageListener自带@Service注解
-
消息数据类型转换优化,增加Integer,Boolean等基础类型的转换
-
暂未加入事务消息功能 (官方最新版支持)
### 关于RocketMQTemplate往多集群发送消息的说明
...
...
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/annotation/RocketMQMessageListener.java
浏览文件 @
933a6d8f
...
...
@@ -26,10 +26,12 @@ import java.lang.annotation.Retention;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
org.apache.rocketmq.common.protocol.heartbeat.MessageModel
;
import
org.springframework.stereotype.Service
;
@Target
(
ElementType
.
TYPE
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Service
public
@interface
RocketMQMessageListener
{
/**
...
...
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/core/DefaultRocketMQListenerContainer.java
浏览文件 @
933a6d8f
...
...
@@ -225,8 +225,22 @@ public class DefaultRocketMQListenerContainer implements InitializingBean, Rocke
String
str
=
new
String
(
messageExt
.
getBody
(),
Charset
.
forName
(
charset
));
if
(
Objects
.
equals
(
messageType
,
String
.
class
))
{
return
str
;
}
else
if
(
Objects
.
equals
(
messageType
,
Byte
.
class
))
{
return
Byte
.
parseByte
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Short
.
class
))
{
return
Short
.
parseShort
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Integer
.
class
))
{
return
Integer
.
parseInt
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Long
.
class
))
{
return
Long
.
parseLong
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Float
.
class
))
{
return
Float
.
parseFloat
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Double
.
class
))
{
return
Double
.
parseDouble
(
str
);
}
else
if
(
Objects
.
equals
(
messageType
,
Boolean
.
class
))
{
return
Boolean
.
parseBoolean
(
str
);
}
else
{
// if msgType not
string
, use objectMapper change it.
// if msgType not
primitive
, use objectMapper change it.
try
{
return
objectMapper
.
readValue
(
str
,
messageType
);
}
catch
(
Exception
e
)
{
...
...
whatsmars-mq/rocketmq-spring-boot-starter/src/main/java/org/apache/rocketmq/spring/starter/core/RocketMQTemplate.java
浏览文件 @
933a6d8f
...
...
@@ -498,8 +498,8 @@ public class RocketMQTemplate extends AbstractMessageSendingTemplate<String> imp
Object
payloadObj
=
message
.
getPayload
();
byte
[]
payloads
;
if
(
payloadObj
instanceof
String
)
{
payloads
=
((
String
)
payloadObj
).
getBytes
(
Charset
.
forName
(
charset
));
if
(
isPrimitiveType
(
payloadObj
)
)
{
payloads
=
payloadObj
.
toString
(
).
getBytes
(
Charset
.
forName
(
charset
));
}
else
{
try
{
String
jsonObj
=
this
.
objectMapper
.
writeValueAsString
(
payloadObj
);
...
...
@@ -554,6 +554,12 @@ public class RocketMQTemplate extends AbstractMessageSendingTemplate<String> imp
return
rocketMsg
;
}
private
boolean
isPrimitiveType
(
Object
obj
)
{
return
obj
instanceof
String
||
obj
instanceof
Byte
||
obj
instanceof
Short
||
obj
instanceof
Integer
||
obj
instanceof
Long
||
obj
instanceof
Float
||
obj
instanceof
Double
||
obj
instanceof
Boolean
;
}
private
Message
<?>
doConvert
(
Object
payload
,
String
keys
)
{
Map
<
String
,
Object
>
headers
=
new
HashMap
<>();
headers
.
put
(
MessageConst
.
PROPERTY_KEYS
,
keys
);
...
...
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer.java
浏览文件 @
933a6d8f
...
...
@@ -3,10 +3,8 @@ package org.hongxi.whatsmars.rocketmq.boot.consumer;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.starter.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.starter.core.RocketMQListener
;
import
org.springframework.stereotype.Service
;
@Slf4j
@Service
@RocketMQMessageListener
(
topic
=
"test-topic-1"
,
consumerGroup
=
"my-consumer_test-topic-1"
)
public
class
MyConsumer
implements
RocketMQListener
<
String
>
{
@Override
...
...
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer2.java
浏览文件 @
933a6d8f
...
...
@@ -4,10 +4,8 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.rocketmq.spring.starter.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.starter.core.RocketMQListener
;
import
org.hongxi.whatsmars.rocketmq.boot.OrderPaidEvent
;
import
org.springframework.stereotype.Service
;
@Slf4j
@Service
@RocketMQMessageListener
(
topic
=
"test-topic-2"
,
consumerGroup
=
"my-consumer_test-topic-2"
)
public
class
MyConsumer2
implements
RocketMQListener
<
OrderPaidEvent
>
{
@Override
...
...
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer3.java
浏览文件 @
933a6d8f
...
...
@@ -3,16 +3,13 @@ package org.hongxi.whatsmars.rocketmq.boot.consumer;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.rocketmq.spring.starter.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.starter.core.RocketMQListener
;
import
org.hongxi.whatsmars.rocketmq.boot.OrderPaidEvent
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.stereotype.Service
;
/**
* 指定连接某个MQ集群
*/
@ConditionalOnProperty
(
prefix
=
"trade.mq"
,
value
=
{
"nameServer"
})
@Slf4j
@Service
@RocketMQMessageListener
(
nameServer
=
"${trade.mq.nameServer}"
,
instanceName
=
"${trade.mq.clusterName}"
,
topic
=
"test-topic-3"
,
consumerGroup
=
"my-consumer_test-topic-3"
)
public
class
MyConsumer3
implements
RocketMQListener
<
String
>
{
@Override
...
...
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer4.java
浏览文件 @
933a6d8f
...
...
@@ -4,13 +4,11 @@ import lombok.extern.slf4j.Slf4j;
import
org.apache.rocketmq.spring.starter.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.starter.core.RocketMQListener
;
import
org.apache.rocketmq.spring.starter.enums.ConsumeMode
;
import
org.springframework.stereotype.Service
;
/**
* 顺序消息消费失败,默认不重试(本人修改点)
*/
@Slf4j
@Service
@RocketMQMessageListener
(
topic
=
"test-topic-4"
,
consumerGroup
=
"my-consumer_test-topic-4"
,
consumeMode
=
ConsumeMode
.
ORDERLY
)
public
class
MyConsumer4
implements
RocketMQListener
<
String
>
{
...
...
whatsmars-mq/whatsmars-mq-rocketmq/src/main/java/org/hongxi/whatsmars/rocketmq/boot/consumer/MyConsumer5.java
浏览文件 @
933a6d8f
...
...
@@ -5,13 +5,11 @@ import org.apache.rocketmq.common.message.MessageExt;
import
org.apache.rocketmq.spring.starter.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.starter.core.RocketMQListener
;
import
org.apache.rocketmq.spring.starter.enums.ConsumeMode
;
import
org.springframework.stereotype.Service
;
/**
* 配置重试次数(本人修改点) reconsumeTimes
*/
@Slf4j
@Service
@RocketMQMessageListener
(
topic
=
"test-topic-4"
,
consumerGroup
=
"my-consumer_test-topic-5"
,
consumeMode
=
ConsumeMode
.
ORDERLY
,
reconsumeTimes
=
3
)
public
class
MyConsumer5
implements
RocketMQListener
<
MessageExt
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录