kafka 生产者消费者配置

生产者:





    
    

    
    

    
        
            
                3600000
                5
                5242880
            
        
    

    

    
        
            
            
        
    


消费者:




    

    

    
        
    

    
    

    
        
            
                smallest
                10485760 
                5242880
                1000
            
        
    

    

    

    
        
            
                
            

            
                
            
        
    


/**
 * 
 * Copyright (c) 2011-2016 All Rights Reserved.
 */
package com.bestpay.posprouter.manager.util;/**
 * Created by lxn on 2016/7/30.
 */

import com.bestpay.posprouter.manager.rebateManager.ProvossSyncManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.integration.kafka.support.KafkaHeaders;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author lxn
 * @version Id: KafKaManager.java, v 0.1 2016/7/30 12:18 lxn Exp $$
 */
@Slf4j
@Component
public class KafKaManager {

    @Autowired
    @Qualifier("inputToKafka")
    MessageChannel channel;

    @Value("${kafka.topic.asyncCutPayment}")
    private String asyncCutPaymentTopic;

    @Value("${kafka.topic.asyncNotifyProvoss}")
    private String asyncNotifyProvossTopic;

    @Autowired
    private ProvossSyncManager provossSyncManager;


    public boolean send(String topic,String obj) {
        log.info("发送消息,topic:{},value:{}",topic,obj);
        Message msg = MessageBuilder.withPayload(obj)
//                .setHeader(KafkaHeaders.MESSAGE_KEY, key)
                .setHeader(KafkaHeaders.TOPIC, topic).build();
        return channel.send(msg);
    }

    public void processMessage(Map> msgs) {
        log.info("收到消息,{}",msgs);
        for (Map.Entry < String,Map>entry:
                msgs.entrySet()){
            log.debug("Suchit Topic:" + entry.getKey());
            if(asyncCutPaymentTopic.equals(entry.getKey())){
                for (String msg : entry.getValue().values()) {
                    log.info("Suchit Consumed Message: " + msg);
                    //TODO 异步扣款
                }
            }else if(asyncNotifyProvossTopic.equals(entry.getKey())){
                for (String msg : entry.getValue().values()) {
                    log.info("Suchit Consumed Message: " + msg);
                    provossSyncManager.onMessage(msg);
                }
            }
        }
    }





}


你可能感兴趣的:(kafka 生产者消费者配置)