Docker build for transports.
This commit is contained in:
parent
5242864ccc
commit
0ae28408c9
@ -16,6 +16,8 @@
|
|||||||
package org.thingsboard.server.common.transport.service;
|
package org.thingsboard.server.common.transport.service;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.kafka.clients.admin.CreateTopicsResult;
|
||||||
|
import org.apache.kafka.clients.admin.NewTopic;
|
||||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||||
import org.apache.kafka.clients.producer.Callback;
|
import org.apache.kafka.clients.producer.Callback;
|
||||||
import org.apache.kafka.clients.producer.RecordMetadata;
|
import org.apache.kafka.clients.producer.RecordMetadata;
|
||||||
@ -42,12 +44,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
|
|||||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceCredentialsResponseMsg;
|
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceCredentialsResponseMsg;
|
||||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceTokenRequestMsg;
|
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceTokenRequestMsg;
|
||||||
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509CertRequestMsg;
|
import org.thingsboard.server.gen.transport.TransportProtos.ValidateDeviceX509CertRequestMsg;
|
||||||
import org.thingsboard.server.kafka.AsyncCallbackTemplate;
|
import org.thingsboard.server.kafka.*;
|
||||||
import org.thingsboard.server.kafka.TBKafkaConsumerTemplate;
|
|
||||||
import org.thingsboard.server.kafka.TBKafkaProducerTemplate;
|
|
||||||
import org.thingsboard.server.kafka.TbKafkaRequestTemplate;
|
|
||||||
import org.thingsboard.server.kafka.TbKafkaSettings;
|
|
||||||
import org.thingsboard.server.kafka.TbNodeIdProvider;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
@ -136,9 +133,19 @@ public class RemoteTransportService extends AbstractTransportService {
|
|||||||
ruleEngineProducer = ruleEngineProducerBuilder.build();
|
ruleEngineProducer = ruleEngineProducerBuilder.build();
|
||||||
ruleEngineProducer.init();
|
ruleEngineProducer.init();
|
||||||
|
|
||||||
|
String notificationsTopicName = notificationsTopic + "." + nodeIdProvider.getNodeId();
|
||||||
|
|
||||||
|
try {
|
||||||
|
TBKafkaAdmin admin = new TBKafkaAdmin(kafkaSettings);
|
||||||
|
CreateTopicsResult result = admin.createTopic(new NewTopic(notificationsTopicName, 1, (short) 1));
|
||||||
|
result.all().get();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.trace("Failed to create topic: {}", e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<ToTransportMsg> mainConsumerBuilder = TBKafkaConsumerTemplate.builder();
|
TBKafkaConsumerTemplate.TBKafkaConsumerTemplateBuilder<ToTransportMsg> mainConsumerBuilder = TBKafkaConsumerTemplate.builder();
|
||||||
mainConsumerBuilder.settings(kafkaSettings);
|
mainConsumerBuilder.settings(kafkaSettings);
|
||||||
mainConsumerBuilder.topic(notificationsTopic + "." + nodeIdProvider.getNodeId());
|
mainConsumerBuilder.topic(notificationsTopicName);
|
||||||
mainConsumerBuilder.clientId("transport-" + nodeIdProvider.getNodeId());
|
mainConsumerBuilder.clientId("transport-" + nodeIdProvider.getNodeId());
|
||||||
mainConsumerBuilder.groupId("transport");
|
mainConsumerBuilder.groupId("transport");
|
||||||
mainConsumerBuilder.autoCommit(true);
|
mainConsumerBuilder.autoCommit(true);
|
||||||
|
|||||||
@ -5,6 +5,8 @@ JS_EXECUTOR_DOCKER_NAME=tb-js-executor
|
|||||||
TB_NODE_DOCKER_NAME=tb-node
|
TB_NODE_DOCKER_NAME=tb-node
|
||||||
WEB_UI_DOCKER_NAME=tb-web-ui
|
WEB_UI_DOCKER_NAME=tb-web-ui
|
||||||
MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport
|
MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport
|
||||||
|
HTTP_TRANSPORT_DOCKER_NAME=tb-http-transport
|
||||||
|
COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport
|
||||||
|
|
||||||
TB_VERSION=2.2.0-SNAPSHOT
|
TB_VERSION=2.2.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,6 @@ services:
|
|||||||
image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}"
|
image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}"
|
||||||
ports:
|
ports:
|
||||||
- "8080"
|
- "8080"
|
||||||
- "5683:5683/udp"
|
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: "json-file"
|
||||||
options:
|
options:
|
||||||
@ -96,6 +95,50 @@ services:
|
|||||||
- tb-mqtt-transport.env
|
- tb-mqtt-transport.env
|
||||||
depends_on:
|
depends_on:
|
||||||
- kafka
|
- kafka
|
||||||
|
tb-http-transport1:
|
||||||
|
restart: always
|
||||||
|
image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||||
|
ports:
|
||||||
|
- "8081"
|
||||||
|
environment:
|
||||||
|
TB_KAFKA_SERVERS: kafka:9092
|
||||||
|
env_file:
|
||||||
|
- tb-http-transport.env
|
||||||
|
depends_on:
|
||||||
|
- kafka
|
||||||
|
tb-http-transport2:
|
||||||
|
restart: always
|
||||||
|
image: "${DOCKER_REPO}/${HTTP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||||
|
ports:
|
||||||
|
- "8081"
|
||||||
|
environment:
|
||||||
|
TB_KAFKA_SERVERS: kafka:9092
|
||||||
|
env_file:
|
||||||
|
- tb-http-transport.env
|
||||||
|
depends_on:
|
||||||
|
- kafka
|
||||||
|
tb-coap-transport1:
|
||||||
|
restart: always
|
||||||
|
image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||||
|
ports:
|
||||||
|
- "5683"
|
||||||
|
environment:
|
||||||
|
TB_KAFKA_SERVERS: kafka:9092
|
||||||
|
env_file:
|
||||||
|
- tb-coap-transport.env
|
||||||
|
depends_on:
|
||||||
|
- kafka
|
||||||
|
tb-coap-transport2:
|
||||||
|
restart: always
|
||||||
|
image: "${DOCKER_REPO}/${COAP_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||||
|
ports:
|
||||||
|
- "5683"
|
||||||
|
environment:
|
||||||
|
TB_KAFKA_SERVERS: kafka:9092
|
||||||
|
env_file:
|
||||||
|
- tb-coap-transport.env
|
||||||
|
depends_on:
|
||||||
|
- kafka
|
||||||
tb-web-ui1:
|
tb-web-ui1:
|
||||||
restart: always
|
restart: always
|
||||||
image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}"
|
image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}"
|
||||||
@ -116,6 +159,16 @@ services:
|
|||||||
TB_PORT: 8080
|
TB_PORT: 8080
|
||||||
env_file:
|
env_file:
|
||||||
- tb-web-ui.env
|
- tb-web-ui.env
|
||||||
|
coap-lb:
|
||||||
|
restart: always
|
||||||
|
container_name: coap-loadbalancer
|
||||||
|
image: instantlinux/udp-nginx-proxy
|
||||||
|
ports:
|
||||||
|
- "5683:5683/udp"
|
||||||
|
environment:
|
||||||
|
BACKENDS: tb-coap-transport1 tb-coap-transport2
|
||||||
|
PORT_BACKEND: 5683
|
||||||
|
PORT_LISTEN: 5683
|
||||||
web:
|
web:
|
||||||
restart: always
|
restart: always
|
||||||
container_name: haproxy-certbot
|
container_name: haproxy-certbot
|
||||||
@ -140,3 +193,5 @@ services:
|
|||||||
- tb-web-ui2
|
- tb-web-ui2
|
||||||
- tb-mqtt-transport1
|
- tb-mqtt-transport1
|
||||||
- tb-mqtt-transport2
|
- tb-mqtt-transport2
|
||||||
|
- tb-http-transport1
|
||||||
|
- tb-http-transport2
|
||||||
|
|||||||
@ -39,6 +39,7 @@ frontend http-in
|
|||||||
acl letsencrypt_http_acl path_beg /.well-known/acme-challenge/
|
acl letsencrypt_http_acl path_beg /.well-known/acme-challenge/
|
||||||
redirect scheme https if !letsencrypt_http_acl !transport_http_acl
|
redirect scheme https if !letsencrypt_http_acl !transport_http_acl
|
||||||
use_backend letsencrypt_http if letsencrypt_http_acl
|
use_backend letsencrypt_http if letsencrypt_http_acl
|
||||||
|
use_backend tb-http-backend if transport_http_acl
|
||||||
|
|
||||||
default_backend tb-web-backend
|
default_backend tb-web-backend
|
||||||
|
|
||||||
@ -72,3 +73,10 @@ backend tb-mqtt-backend
|
|||||||
option log-health-checks
|
option log-health-checks
|
||||||
server tbMqtt1 tb-mqtt-transport1:1883 check
|
server tbMqtt1 tb-mqtt-transport1:1883 check
|
||||||
server tbMqtt2 tb-mqtt-transport2:1883 check
|
server tbMqtt2 tb-mqtt-transport2:1883 check
|
||||||
|
|
||||||
|
backend tb-http-backend
|
||||||
|
balance leastconn
|
||||||
|
option tcp-check
|
||||||
|
option log-health-checks
|
||||||
|
server tbHttp1 tb-http-transport1:8081 check
|
||||||
|
server tbHttp2 tb-http-transport2:8081 check
|
||||||
|
|||||||
6
msa/docker/tb-coap-transport.env
Normal file
6
msa/docker/tb-coap-transport.env
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
COAP_BIND_ADDRESS=0.0.0.0
|
||||||
|
COAP_BIND_PORT=5683
|
||||||
|
COAP_TIMEOUT=10000
|
||||||
|
|
||||||
|
TB_KAFKA_SERVERS=localhost:9092
|
||||||
6
msa/docker/tb-http-transport.env
Normal file
6
msa/docker/tb-http-transport.env
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
HTTP_BIND_ADDRESS=0.0.0.0
|
||||||
|
HTTP_BIND_PORT=8081
|
||||||
|
HTTP_REQUEST_TIMEOUT=60000
|
||||||
|
|
||||||
|
TB_KAFKA_SERVERS=localhost:9092
|
||||||
31
msa/transport/coap/docker/Dockerfile
Normal file
31
msa/transport/coap/docker/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
FROM openjdk:8-jre
|
||||||
|
|
||||||
|
COPY logback.xml ${pkg.name}.conf start-tb-coap-transport.sh ${pkg.name}.deb /tmp/
|
||||||
|
|
||||||
|
RUN chmod a+x /tmp/*.sh \
|
||||||
|
&& mv /tmp/start-tb-coap-transport.sh /usr/bin
|
||||||
|
|
||||||
|
RUN dpkg -i /tmp/${pkg.name}.deb
|
||||||
|
|
||||||
|
RUN update-rc.d ${pkg.name} disable
|
||||||
|
|
||||||
|
RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \
|
||||||
|
&& mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf
|
||||||
|
|
||||||
|
CMD ["start-tb-coap-transport.sh"]
|
||||||
50
msa/transport/coap/docker/logback.xml
Normal file
50
msa/transport/coap/docker/logback.xml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!DOCTYPE configuration>
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds">
|
||||||
|
|
||||||
|
<appender name="fileLogAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>/var/log/${pkg.name}/${pkg.name}.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/${pkg.name}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="org.thingsboard.server" level="INFO" />
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="fileLogAppender"/>
|
||||||
|
<appender-ref ref="STDOUT"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
29
msa/transport/coap/docker/start-tb-coap-transport.sh
Executable file
29
msa/transport/coap/docker/start-tb-coap-transport.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
CONF_FOLDER="${pkg.installFolder}/conf"
|
||||||
|
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||||
|
configfile=${pkg.name}.conf
|
||||||
|
|
||||||
|
source "${CONF_FOLDER}/${configfile}"
|
||||||
|
|
||||||
|
echo "Starting '${project.name}' ..."
|
||||||
|
|
||||||
|
exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.coap.ThingsboardCoapTransportApplication \
|
||||||
|
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||||
|
-Dlogging.config=${CONF_FOLDER}/logback.xml \
|
||||||
|
org.springframework.boot.loader.PropertiesLauncher
|
||||||
23
msa/transport/coap/docker/tb-coap-transport.conf
Normal file
23
msa/transport/coap/docker/tb-coap-transport.conf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError"
|
||||||
|
export LOG_FILENAME=${pkg.name}.out
|
||||||
|
export LOADER_PATH=${pkg.installFolder}/conf
|
||||||
137
msa/transport/coap/pom.xml
Normal file
137
msa/transport/coap/pom.xml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.thingsboard.msa</groupId>
|
||||||
|
<version>2.2.0-SNAPSHOT</version>
|
||||||
|
<artifactId>transport</artifactId>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.thingsboard.msa.transport</groupId>
|
||||||
|
<artifactId>coap</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<name>ThingsBoard COAP Transport Microservice</name>
|
||||||
|
<url>https://thingsboard.io</url>
|
||||||
|
<description>ThingsBoard COAP Transport Microservice</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<main.dir>${basedir}/../../..</main.dir>
|
||||||
|
<pkg.name>tb-coap-transport</pkg.name>
|
||||||
|
<docker.name>tb-coap-transport</docker.name>
|
||||||
|
<pkg.user>thingsboard</pkg.user>
|
||||||
|
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||||
|
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.thingsboard.transport</groupId>
|
||||||
|
<artifactId>coap</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<classifier>deb</classifier>
|
||||||
|
<type>deb</type>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-tb-coap-transport-deb</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.thingsboard.transport</groupId>
|
||||||
|
<artifactId>coap</artifactId>
|
||||||
|
<classifier>deb</classifier>
|
||||||
|
<type>deb</type>
|
||||||
|
<destFileName>${pkg.name}.deb</destFileName>
|
||||||
|
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-docker-config</id>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-resources</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>docker</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.spotify</groupId>
|
||||||
|
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>build-docker-image</id>
|
||||||
|
<phase>pre-integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>build</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<skip>${dockerfile.skip}</skip>
|
||||||
|
<repository>${docker.repo}/${docker.name}</repository>
|
||||||
|
<tag>${project.version}</tag>
|
||||||
|
<verbose>true</verbose>
|
||||||
|
<googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
|
||||||
|
<contextDirectory>${project.build.directory}</contextDirectory>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>jenkins</id>
|
||||||
|
<name>Jenkins Repository</name>
|
||||||
|
<url>http://repo.jenkins-ci.org/releases</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
</project>
|
||||||
31
msa/transport/http/docker/Dockerfile
Normal file
31
msa/transport/http/docker/Dockerfile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
FROM openjdk:8-jre
|
||||||
|
|
||||||
|
COPY logback.xml ${pkg.name}.conf start-tb-http-transport.sh ${pkg.name}.deb /tmp/
|
||||||
|
|
||||||
|
RUN chmod a+x /tmp/*.sh \
|
||||||
|
&& mv /tmp/start-tb-http-transport.sh /usr/bin
|
||||||
|
|
||||||
|
RUN dpkg -i /tmp/${pkg.name}.deb
|
||||||
|
|
||||||
|
RUN update-rc.d ${pkg.name} disable
|
||||||
|
|
||||||
|
RUN mv /tmp/logback.xml ${pkg.installFolder}/conf \
|
||||||
|
&& mv /tmp/${pkg.name}.conf ${pkg.installFolder}/conf
|
||||||
|
|
||||||
|
CMD ["start-tb-http-transport.sh"]
|
||||||
50
msa/transport/http/docker/logback.xml
Normal file
50
msa/transport/http/docker/logback.xml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<!DOCTYPE configuration>
|
||||||
|
<configuration scan="true" scanPeriod="10 seconds">
|
||||||
|
|
||||||
|
<appender name="fileLogAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>/var/log/${pkg.name}/${pkg.name}.log</file>
|
||||||
|
<rollingPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>/var/log/${pkg.name}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
|
||||||
|
<maxFileSize>100MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
<totalSizeCap>3GB</totalSizeCap>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="org.thingsboard.server" level="INFO" />
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="fileLogAppender"/>
|
||||||
|
<appender-ref ref="STDOUT"/>
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
29
msa/transport/http/docker/start-tb-http-transport.sh
Executable file
29
msa/transport/http/docker/start-tb-http-transport.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
CONF_FOLDER="${pkg.installFolder}/conf"
|
||||||
|
jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||||
|
configfile=${pkg.name}.conf
|
||||||
|
|
||||||
|
source "${CONF_FOLDER}/${configfile}"
|
||||||
|
|
||||||
|
echo "Starting '${project.name}' ..."
|
||||||
|
|
||||||
|
exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.http.ThingsboardHttpTransportApplication \
|
||||||
|
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||||
|
-Dlogging.config=${CONF_FOLDER}/logback.xml \
|
||||||
|
org.springframework.boot.loader.PropertiesLauncher
|
||||||
23
msa/transport/http/docker/tb-http-transport.conf
Normal file
23
msa/transport/http/docker/tb-http-transport.conf
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#
|
||||||
|
# Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled"
|
||||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+ExitOnOutOfMemoryError"
|
||||||
|
export LOG_FILENAME=${pkg.name}.out
|
||||||
|
export LOADER_PATH=${pkg.installFolder}/conf
|
||||||
137
msa/transport/http/pom.xml
Normal file
137
msa/transport/http/pom.xml
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
Copyright © 2016-2018 The Thingsboard Authors
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.thingsboard.msa</groupId>
|
||||||
|
<version>2.2.0-SNAPSHOT</version>
|
||||||
|
<artifactId>transport</artifactId>
|
||||||
|
</parent>
|
||||||
|
<groupId>org.thingsboard.msa.transport</groupId>
|
||||||
|
<artifactId>http</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<name>ThingsBoard HTTP Transport Microservice</name>
|
||||||
|
<url>https://thingsboard.io</url>
|
||||||
|
<description>ThingsBoard HTTP Transport Microservice</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<main.dir>${basedir}/../../..</main.dir>
|
||||||
|
<pkg.name>tb-http-transport</pkg.name>
|
||||||
|
<docker.name>tb-http-transport</docker.name>
|
||||||
|
<pkg.user>thingsboard</pkg.user>
|
||||||
|
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||||
|
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.thingsboard.transport</groupId>
|
||||||
|
<artifactId>http</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<classifier>deb</classifier>
|
||||||
|
<type>deb</type>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-tb-http-transport-deb</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>org.thingsboard.transport</groupId>
|
||||||
|
<artifactId>http</artifactId>
|
||||||
|
<classifier>deb</classifier>
|
||||||
|
<type>deb</type>
|
||||||
|
<destFileName>${pkg.name}.deb</destFileName>
|
||||||
|
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-docker-config</id>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-resources</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}</outputDirectory>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>docker</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.spotify</groupId>
|
||||||
|
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>build-docker-image</id>
|
||||||
|
<phase>pre-integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>build</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<skip>${dockerfile.skip}</skip>
|
||||||
|
<repository>${docker.repo}/${docker.name}</repository>
|
||||||
|
<tag>${project.version}</tag>
|
||||||
|
<verbose>true</verbose>
|
||||||
|
<googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
|
||||||
|
<contextDirectory>${project.build.directory}</contextDirectory>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>jenkins</id>
|
||||||
|
<name>Jenkins Repository</name>
|
||||||
|
<url>http://repo.jenkins-ci.org/releases</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
</project>
|
||||||
@ -36,6 +36,8 @@
|
|||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>mqtt</module>
|
<module>mqtt</module>
|
||||||
|
<module>http</module>
|
||||||
|
<module>coap</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package org.thingsboard.server.mqtt; /**
|
/**
|
||||||
* Copyright © 2016-2018 The Thingsboard Authors
|
* Copyright © 2016-2018 The Thingsboard Authors
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -14,13 +14,12 @@ package org.thingsboard.server.mqtt; /**
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
package org.thingsboard.server.http;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.SpringBootConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.thingsboard.server.mqtt; /**
|
/**
|
||||||
* Copyright © 2016-2018 The Thingsboard Authors
|
* Copyright © 2016-2018 The Thingsboard Authors
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -14,6 +14,8 @@ package org.thingsboard.server.mqtt; /**
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
package org.thingsboard.server.mqtt;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.SpringBootConfiguration;
|
import org.springframework.boot.SpringBootConfiguration;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user