java开发使用kafka推送消息的真正应用

在项目不可避免的使用到消息的推送,总结kafka推送消息:(总结生产消息,消费消息暂无)
本例子在handler层进行推送消息:

a.引入引来:(参考)


    org.apache.kafka
    kafka_2.12
    1.1.1

b.接口中注入: (本例在handler中注入)

 @Autowired
    KafkaProducer c;

c. 运用kafkaProducer,调用send方法推送消息(handler中进行推送消息)
在这里插入图片描述
kafkaProducer.send(new ProducerRecord(“消息准备推送到Kafka指定的topic”, “准备推送的消息”));

1.service层:

	@RestController
@RequestMapping("/rule")
public class RuleService {
    @Autowired
    private RuleHandler handler;

    @GetMapping(path = "collideReminder")
    public Response collideReminder(@ApiParam("设备识别号") @RequestParam(name = "imei") String imei,
                                    @ApiParam(value = "碰撞等级") @RequestParam(value = "collideLevel") Integer collideLevel) {

        return handler.collideReminder(imei, collideLevel);
        }
    }

2.handler层:

@Component
public class RuleHandler {

    private static final Logger logger = LoggerFactory.getLogger(RuleHandler.class);
    public static final String RESCUE_MSG = "您的车辆当前发生故障,请确认是否进行援助";

    @Autowired
    private RuleDao ruleDao;
    @Autowired
    private MessageDao messageDao;

    @Autowired
    Properties properties;

    @Autowired
    KafkaProducer kafkaProducer;   //注入KafkaProducer

    public Response collideReminder(String imei, Integer collideLevel) {
             当碰撞等级为1级和2级时,将推送碰撞提醒
        if (collideLevel == 1 || collideLevel == 2) {
            String messageContent = "您的车辆当前发生" + collideLevel + "碰撞等级碰撞,请关注您的爱车状态";
            //2.向kafka推送消息
            logger.debug("kafka send message:" + messageContent + " to topic is collide_Reminder");
            kafkaProducer.send(new ProducerRecord("collide_Reminder", messageContent));
            logger.debug("kafka send to topic is collide_Reminder success.");
            //3.向数据库中保存消息内容
            Message message = new Message();
            message.setImei(imei);
            message.setMessageType(5);
            message.setMessageContent(messageContent);
            message.setIsRead(0);
            message.setIsUsed(0);
            message.setIsDel(0);
            messageDao.insertMessage(message);
        }
        return Response.success();
        }
    }

3.dao层:

public interface MessageDao extends Mapper {

    /***
     * 单条数据插入
     * @param object
     * @return
     */
    int insertMessage(Message message);
    }

4.MessageDao.xml:


	//Message实体类
		INSERT INTO srm_message
	    	id,
			imei,
			message_type,
			message_content,
			small_type,
			is_read,
			is_del,
			is_used,
			use_time,
			create_time,
			update_time 
		VALUES ( #{id},
		#{imei},
		#{messageType},
		#{messageContent},
		#{isRead},
		#{isDel},
		#{isUsed},
		#{useTime},
		#{createTime},
		#{updateTime}
)
	

5.Message实体类:

@Data
@Table(name = "message")
public class Message {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "imei")
    private String imei;


    @Column(name = "message_type")
    private Integer messageType;

    @Column(name = "small_type")
    private Integer smallType;
    @Column(name = "message_content")
    private String messageContent;

    @Column(name = "is_read")
    private Integer isRead;

    @Column(name = "is_used")
    private Integer isUsed;

    @Column(name = "use_time")
    private Date useTime;

    @Column(name = "is_del")
    private Integer isDel;

    @Column(name = "create_time")
    private Date createTime;

    @Column(name = "update_time")
    private Date updateTime;

}

6.表数据:
在这里插入图片描述
7.表设计:

CREATE TABLE `message` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `activity_id` bigint(20) DEFAULT NULL COMMENT '活动id',
  `vin` varchar(20) DEFAULT NULL COMMENT 'vin码',
  `imei` varchar(20) DEFAULT NULL COMMENT '设备号',
  `message_type` int(11) DEFAULT NULL COMMENT '消息类型1:系统提醒、2:碰撞提醒、3:报警提醒、4:加油提醒',
  `small_type` int(11) DEFAULT NULL COMMENT '1.长距离、2.恶劣天气',
  `message_content` varchar(255) DEFAULT NULL COMMENT '消息内容',
  `is_read` int(11) DEFAULT '0' COMMENT '是否已读0:未读、1:已读、2:已处理',
  `is_used` int(11) DEFAULT '0' COMMENT '是否启用0:未启用、1:启用',
  `use_time` timestamp NULL DEFAULT NULL COMMENT '启用时间',
  `is_del` int(11) DEFAULT '0' COMMENT '删除标识 0:未删除、1:已删除',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  KEY `pk_idx_type` (`message_type`,`is_read`) USING BTREE,
  KEY `pk_idx_imei` (`imei`) USING BTREE,
  KEY `pk_idx_time` (`create_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=43868 DEFAULT CHARSET=utf8 COMMENT='消息表';

你可能感兴趣的:(kafka)