Commit aa2c5f08 authored by Nguyen Ha's avatar Nguyen Ha

add example job

parent b57bf84e
campaign
\ No newline at end of file
......@@ -10,6 +10,7 @@
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="campaign" target="1.8" />
<module name="service-campaign" target="1.8" />
</bytecodeTargetLevel>
</component>
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="dataSourceStorageLocal">
<data-source name="@10.60.157.135" uuid="48e51d76-0f49-4cbd-a1a7-e58de38421a4">
<database-info product="Oracle" version="Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production&#10;With the Partitioning, OLAP, Data Mining and Real Application Testing options" jdbc-version="4.0" driver-name="Oracle JDBC driver" driver-version="12.1.0.2.0">
<extra-name-characters>$#</extra-name-characters>
<identifier-quote-string>&quot;</identifier-quote-string>
</database-info>
<case-sensitivity plain-identifiers="upper" quoted-identifiers="exact" />
<secret-storage>master_key</secret-storage>
<user-name>CCMS_FULL</user-name>
<introspection-schemas>*:CCMS_FULL</introspection-schemas>
</data-source>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="@10.60.157.135" uuid="48e51d76-0f49-4cbd-a1a7-e58de38421a4">
<driver-ref>oracle</driver-ref>
<synchronize>true</synchronize>
<auto-commit>false</auto-commit>
<jdbc-driver>oracle.jdbc.OracleDriver</jdbc-driver>
<jdbc-url>jdbc:oracle:thin:@10.60.157.135:1521:vt</jdbc-url>
<driver-properties>
<property name="v$session.program" value="DataGrip" />
</driver-properties>
</data-source>
</component>
</project>
\ No newline at end of file
This diff is collapsed.
#n:CCMS_FULL
!<md> [1561736117000, 0, null, null, -2147483648, -2147483648]
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="ExternalSystem" externalSystem="Maven" />
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration />
</facet>
<facet type="web" name="Web">
<configuration>
<webroots />
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
</module>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
package com.viettel.campaign.config;
import com.viettel.campaign.job.CampaignJob;
import com.viettel.campaign.service.ApParamService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.util.Date;
import java.util.concurrent.ScheduledFuture;
/**
* @author hanv_itsol
* @project campaign
*/
@Slf4j
@EnableScheduling
@Configuration
public class JobConfig implements SchedulingConfigurer {
@Autowired
private ApParamService apParamService;
TaskScheduler taskScheduler;
private ScheduledFuture<?> job1;
private ScheduledFuture<?> job2;
@Bean
public CampaignJob campaignJob(){
return new CampaignJob();
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix("scheduler-thread");
threadPoolTaskScheduler.initialize();
job1(threadPoolTaskScheduler);
job2(threadPoolTaskScheduler);
this.taskScheduler = threadPoolTaskScheduler;
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
private void job1(TaskScheduler scheduler) {
job1 = scheduler.schedule(() -> {
log.info("processing job1 ...");
log.info(Thread.currentThread().getName() + " The Task1 executed at " + new Date());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}, triggerContext -> {
String cronExp = "0/5 * * * * ?";// Can be pulled from a db .
return new CronTrigger(cronExp).nextExecutionTime(triggerContext);
});
}
private void job2(TaskScheduler scheduler) {
job2 = scheduler.schedule(() -> {
// log.info("processing job2 ...");
// log.info(Thread.currentThread().getName() + " The Task2 executed at " + new Date());
campaignJob().process();
}, triggerContext -> {
String cronExp = "0/1 * * * * ?";// Can be pulled from a db . This will run every minute
return new CronTrigger(cronExp).nextExecutionTime(triggerContext);
});
}
// @Override
// public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//// scheduledTaskRegistrar.addTriggerTask(() -> campaignJob().process2(), (TriggerContext triggerContext) -> yourService.getCron());
// }
}
package com.viettel.campaign.config;
import com.viettel.campaign.service.Receiver;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.springframework.context.annotation.Bean;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.support.serializer.JsonDeserializer;
/**
* @author hanv_itsol
* @project campaign
*/
@Configuration
public class ReceiverConfig {
// @Value("${spring.kafka.bootstrap-servers}")
private String bootstrapServers = "192.168.1.201:9092";
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
props.put(ConsumerConfig.GROUP_ID_CONFIG, "hanv");
return props;
}
@Bean
public ConsumerFactory<String, String> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs(), new StringDeserializer(),
new JsonDeserializer<>());
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, String> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
return factory;
}
@Bean
public Receiver receiver() {
return new Receiver();
}
}
package com.viettel.campaign.config;
import java.util.HashMap;
import java.util.Map;
import com.viettel.campaign.service.Sender;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.serializer.JsonSerializer;
/**
* @author hanv_itsol
* @project campaign
*/
@Configuration
public class SenderConfig {
private String bootstrapServers = "192.168.1.201:9092";
@Bean
public Map<String, Object> producerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
return props;
}
@Bean
public ProducerFactory<String, String> producerFactory() {
return new DefaultKafkaProducerFactory<>(producerConfigs());
}
@Bean
public KafkaTemplate<String, String> simpleKafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
@Bean
public Sender sender() {
return new Sender();
}
}
package com.viettel.campaign.domain;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Entity
@Table(name = "AP_PARAM")
@Getter
@Setter
@NoArgsConstructor
public class ApParam implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator="AP_PARAM_SEQ")
@SequenceGenerator(name="AP_PARAM_SEQ",sequenceName="AP_PARAM_SEQ", allocationSize=1)
@Basic(optional = false)
@NotNull
@Column(name = "AP_PARAM_ID")
private String apParamId;
@Column(name = "PAR_NAME")
private String parName;
@Column(name = "PAR_VALUE")
private String parValue;
@Column(name = "RESOURCE_ID")
private String resourceId;
@Column(name = "STATUS")
private String status;
@Column(name = "PAR_CODE")
private String parCode;
@Column(name = "PAR_TYPE")
private String parType;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "IS_DELETE")
private String isDelete;
@Column(name = "IS_DEFAULT")
private String isDefault;
@Column(name = "ENABLE_EDIT")
private String enableEdit;
@Column(name = "COMPANY_SITE_ID")
private String companySiteId;
}
......@@ -21,5 +21,5 @@ public class UserSession implements Serializable {
String role;
Long siteId;
Long companySiteId;
long expTime;
Long expTime;
}
package com.viettel.campaign.job;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author hanv_itsol
* @project campaign
*/
@Slf4j
public class CampaignJob {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
// @Scheduled(fixedRate = 6000)
// @Transactional( propagation = Propagation.REQUIRED)
public void process() {
log.info("processing job2 ..."+ dateFormat.format(new Date()));
}
}
package com.viettel.campaign.repository;
import com.viettel.campaign.domain.ApParam;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author hanv_itsol
* @project campaign
*/
@Repository
public interface ApParamRepository extends BaseRepository<ApParam> {
List<ApParam> findAll();
}
package com.viettel.campaign.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;
/**
* @author hanv_itsol
* @project campaign
*/
@NoRepositoryBean
public interface BaseRepository<T> extends JpaRepository<T, Long>, JpaSpecificationExecutor {
//
}
package com.viettel.campaign.service;
import com.viettel.campaign.domain.ApParam;
import com.viettel.campaign.repository.ApParamRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author hanv_itsol
* @project campaign
*/
@Service
public class ApParamService {
@Autowired
private ApParamRepository apParamRepository;
public List<ApParam> findAll(){
return apParamRepository.findAll();
}
}
package com.viettel.campaign.service;
import org.springframework.kafka.annotation.KafkaListener;
import java.util.concurrent.CountDownLatch;
/**
* @author hanv_itsol
* @project campaign
*/
public class Receiver {
private CountDownLatch latch = new CountDownLatch(1);
@KafkaListener(topics = "hanv")
public void receive(String payload) {
latch.countDown();
}
}
package com.viettel.campaign.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
/**
* @author hanv_itsol
* @project campaign
*/
public class Sender {
@Autowired
private KafkaTemplate<String, String> simpleKafkaTemplate;
public void send(String topic, String payload) {
simpleKafkaTemplate.send(topic, payload);
}
}
package com.viettel.campaign.web.controller;
import com.viettel.campaign.service.Sender;
import com.viettel.campaign.service.Producer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* @author hanv_itsol
......@@ -17,10 +15,13 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kafka")
public class KafkaController {
private final Sender sender;
private final Producer producer;
@Autowired
KafkaController(Producer producer) {
KafkaController(Sender sender, Producer producer) {
this.sender = sender;
this.producer = producer;
}
......@@ -35,4 +36,9 @@ public class KafkaController {
log.info("message: #{}", message);
this.producer.sendMessageTopic2(message);
}
@GetMapping(value = "/test")
public void test(){
sender.send("hanv", "haha");
}
}
server:
port: 9999
spring:
# application:
# name: campaign
application:
name: campaign
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@10.60.157.135:1521:vt
......@@ -13,14 +13,19 @@ spring:
generate-ddl: false
hibernate:
ddl-auto: validate
kafka:
consumer:
bootstrap-servers: 192.168.1.201:9092
group-id: group_id
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
bootstrap-servers: 192.168.1.201:9092
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
\ No newline at end of file
# kafka:
# consumer:
# bootstrap-servers: 192.168.1.201:9092
# group-id: group_id
# auto-offset-reset: earliest
# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
# producer:
# bootstrap-servers: 192.168.1.201:9092
# key-serializer: org.apache.kafka.common.serialization.StringSerializer
# value-serializer: org.apache.kafka.common.serialization.StringSerializer
logging:
config: classpath:logback.xml
level:
com.viettel.campaign: trace
# file: logs/campaign.log
\ No newline at end of file
spring:
application:
name: campaign
logging:
config: classpath:logback.xml
level:
com.viettel.campaign: trace
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!-- Example for logging into the build folder of your project -->
<property name="LOG_DIR" value="${BUILD_FOLDER:-logs}/${springAppName}/%d{yyyyMM}"/>
<!-- You can override this to have a custom pattern -->
<!--<property name="CONSOLE_LOG_PATTERN"-->
<!--value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="DEV" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/dev.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>90</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="QA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/qa.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="OPS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/ops.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="DEV"/>
<appender-ref ref="QA"/>
<appender-ref ref="OPS"/>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!-- Example for logging into the build folder of your project -->
<property name="LOG_DIR" value="${BUILD_FOLDER:-logs}/${springAppName}/%d{yyyyMM}"/>
<!-- You can override this to have a custom pattern -->
<!--<property name="CONSOLE_LOG_PATTERN"-->
<!--value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="DEV" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/dev.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>90</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="QA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/qa.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="OPS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/ops.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="DEV"/>
<appender-ref ref="QA"/>
<appender-ref ref="OPS"/>
</root>
</configuration>
\ No newline at end of file
This diff is collapsed.
server:
port: 9999
spring:
application:
name: campaign
# datasource:
# driver-class-name: oracle.jdbc.driver.OracleDriver
# url: jdbc:oracle:thin:@10.60.157.135:1521:vt
# username: CCMS_FULL
# password: CCMS_FULL#123
jpa:
show-sql: true
generate-ddl: false
hibernate:
ddl-auto: validate
# kafka:
# consumer:
# bootstrap-servers: 192.168.1.201:9092
# group-id: group_id
# auto-offset-reset: earliest
# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
# producer:
# bootstrap-servers: 192.168.1.201:9092
# key-serializer: org.apache.kafka.common.serialization.StringSerializer
# value-serializer: org.apache.kafka.common.serialization.StringSerializer
logging:
config: classpath:logback.xml
level:
com.viettel.campaign: trace
# file: logs/campaign.log
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!-- Example for logging into the build folder of your project -->
<property name="LOG_DIR" value="${BUILD_FOLDER:-logs}/${springAppName}/%d{yyyyMM}"/>
<!-- You can override this to have a custom pattern -->
<!--<property name="CONSOLE_LOG_PATTERN"-->
<!--value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(-&#45;&#45;){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="DEV" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/dev.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>90</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ALL</level>
</filter>
</appender>
<appender name="QA" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/qa.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="OPS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- daily and size rollover -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_DIR}/ops.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 180 days' worth of history capped at 3GB total size -->
<maxHistory>180</maxHistory>
<totalSizeCap>6GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="DEV"/>
<appender-ref ref="QA"/>
<appender-ref ref="OPS"/>
</root>
</configuration>
\ No newline at end of file
#Created by Apache Maven 3.6.1
version=0.0.1-SNAPSHOT
groupId=com.viettel
artifactId=campaign
com/viettel/campaign/ServiceCampaignApplication.class
com/viettel/campaign/config/WebSocketConfig.class
com/viettel/campaign/web/controller/KafkaController.class
com/viettel/campaign/service/Producer.class
com/viettel/campaign/filter/UserSession.class
com/viettel/campaign/service/Consumer.class
com/viettel/campaign/config/WebSecurityConfig.class
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/service/Producer.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/config/WebSocketConfig.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/filter/UserSession.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/web/package-info.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/service/Consumer.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/ServiceCampaignApplication.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/config/WebSecurityConfig.java
/Users/hanv_itsol/example/service-campaign/src/main/java/com/viettel/campaign/web/controller/KafkaController.java
/Users/hanv_itsol/example/service-campaign/src/test/java/com/viettel/campaign/ServiceCampaignApplicationTests.java
# Created on 2019-06-27T10:14:01.363
System.exit() or native command error interrupted process checker.
-------------------------------------------------------------------------------
Test set: com.viettel.campaign.ServiceCampaignApplicationTests
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.23 s - in com.viettel.campaign.ServiceCampaignApplicationTests
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment