Merge with origin
This commit is contained in:
commit
0bb26f245f
@ -57,8 +57,8 @@
|
||||
<artifactId>rule-engine-components</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>transport</artifactId>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>transport-api</artifactId>
|
||||
</dependency>
|
||||
<!--<dependency>-->
|
||||
<!--<groupId>org.thingsboard.transport</groupId>-->
|
||||
|
||||
@ -4,7 +4,8 @@ DOCKER_REPO=local-maven-build
|
||||
JS_EXECUTOR_DOCKER_NAME=tb-js-executor
|
||||
TB_NODE_DOCKER_NAME=tb-node
|
||||
WEB_UI_DOCKER_NAME=tb-web-ui
|
||||
MQTT_TRANSPORT_DOCKER_NAME=tb-mqtt-transport
|
||||
|
||||
TB_VERSION=2.2.0-SNAPSHOT
|
||||
|
||||
KAFKA_TOPICS=js.eval.requests:100:1
|
||||
KAFKA_TOPICS=js.eval.requests:100:1,tb.transport.api.requests:30:1,tb.rule-engine:30:1
|
||||
|
||||
@ -53,7 +53,6 @@ services:
|
||||
image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "8080"
|
||||
- "1883:1883"
|
||||
- "5683:5683/udp"
|
||||
logging:
|
||||
driver: "json-file"
|
||||
@ -72,6 +71,28 @@ services:
|
||||
- ./tb-node/log:/var/log/thingsboard
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-mqtt-transport1:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "1883"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-mqtt-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-mqtt-transport2:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${MQTT_TRANSPORT_DOCKER_NAME}:${TB_VERSION}"
|
||||
ports:
|
||||
- "1883"
|
||||
environment:
|
||||
TB_KAFKA_SERVERS: kafka:9092
|
||||
env_file:
|
||||
- tb-mqtt-transport.env
|
||||
depends_on:
|
||||
- kafka
|
||||
tb-web-ui1:
|
||||
restart: always
|
||||
image: "${DOCKER_REPO}/${WEB_UI_DOCKER_NAME}:${TB_VERSION}"
|
||||
@ -103,12 +124,16 @@ services:
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "1883:1883"
|
||||
- "9999:9999"
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
environment:
|
||||
HTTP_PORT: 80
|
||||
HTTPS_PORT: 443
|
||||
MQTT_PORT: 1883
|
||||
links:
|
||||
- tb-web-ui1
|
||||
- tb-web-ui2
|
||||
- tb-mqtt-transport1
|
||||
- tb-mqtt-transport2
|
||||
|
||||
@ -49,6 +49,12 @@ frontend https_in
|
||||
|
||||
default_backend tb-web-backend
|
||||
|
||||
frontend mqtt-in
|
||||
mode tcp
|
||||
bind *:${MQTT_PORT}
|
||||
|
||||
default_backend tb-mqtt-backend
|
||||
|
||||
backend letsencrypt_http
|
||||
server letsencrypt_http_srv 127.0.0.1:8080
|
||||
|
||||
@ -59,3 +65,10 @@ backend tb-web-backend
|
||||
server tbWeb1 tb-web-ui1:8080 check
|
||||
server tbWeb2 tb-web-ui2:8080 check
|
||||
http-request set-header X-Forwarded-Port %[dst_port]
|
||||
|
||||
backend tb-mqtt-backend
|
||||
balance leastconn
|
||||
option tcp-check
|
||||
option log-health-checks
|
||||
server tbMqtt1 tb-mqtt-transport1:1883 check
|
||||
server tbMqtt2 tb-mqtt-transport2:1883 check
|
||||
|
||||
6
msa/docker/tb-mqtt-transport.env
Normal file
6
msa/docker/tb-mqtt-transport.env
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
MQTT_BIND_ADDRESS=0.0.0.0
|
||||
MQTT_BIND_PORT=1883
|
||||
MQTT_TIMEOUT=10000
|
||||
|
||||
TB_KAFKA_SERVERS=localhost:9092
|
||||
@ -1,8 +1,6 @@
|
||||
# ThingsBoard server configuration
|
||||
MQTT_BIND_ADDRESS=0.0.0.0
|
||||
MQTT_BIND_PORT=1883
|
||||
COAP_BIND_ADDRESS=0.0.0.0
|
||||
COAP_BIND_PORT=5683
|
||||
|
||||
TRANSPORT_TYPE=remote
|
||||
|
||||
# type of database to use: sql[DEFAULT] or cassandra
|
||||
DATABASE_TS_TYPE=sql
|
||||
|
||||
@ -40,6 +40,7 @@
|
||||
<module>js-executor</module>
|
||||
<module>web-ui</module>
|
||||
<module>tb-node</module>
|
||||
<module>transport</module>
|
||||
</modules>
|
||||
|
||||
<build>
|
||||
|
||||
31
msa/transport/mqtt/docker/Dockerfile
Normal file
31
msa/transport/mqtt/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-mqtt-transport.sh ${pkg.name}.deb /tmp/
|
||||
|
||||
RUN chmod a+x /tmp/*.sh \
|
||||
&& mv /tmp/start-tb-mqtt-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-mqtt-transport.sh"]
|
||||
50
msa/transport/mqtt/docker/logback.xml
Normal file
50
msa/transport/mqtt/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/mqtt/docker/start-tb-mqtt-transport.sh
Executable file
29
msa/transport/mqtt/docker/start-tb-mqtt-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.mqtt.ThingsboardMqttTransportApplication \
|
||||
-Dspring.jpa.hibernate.ddl-auto=none \
|
||||
-Dlogging.config=${CONF_FOLDER}/logback.xml \
|
||||
org.springframework.boot.loader.PropertiesLauncher
|
||||
23
msa/transport/mqtt/docker/tb-mqtt-transport.conf
Normal file
23
msa/transport/mqtt/docker/tb-mqtt-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/mqtt/pom.xml
Normal file
137
msa/transport/mqtt/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>mqtt</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ThingsBoard MQTT Transport Microservice</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
<description>ThingsBoard MQTT Transport Microservice</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../../..</main.dir>
|
||||
<pkg.name>tb-mqtt-transport</pkg.name>
|
||||
<docker.name>tb-mqtt-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>mqtt</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-mqtt-transport-deb</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>mqtt</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>
|
||||
53
msa/transport/pom.xml
Normal file
53
msa/transport/pom.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<!--
|
||||
|
||||
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</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<artifactId>msa</artifactId>
|
||||
</parent>
|
||||
<groupId>org.thingsboard.msa</groupId>
|
||||
<artifactId>transport</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>ThingsBoard Transport Microservices</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
|
||||
<properties>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
<module>mqtt</module>
|
||||
</modules>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
<version>1.4.5</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@ -45,8 +45,8 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>transport</artifactId>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>transport-api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@ -1,64 +0,0 @@
|
||||
<!--
|
||||
|
||||
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</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<artifactId>transport</artifactId>
|
||||
</parent>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>mqtt-transport</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Thingsboard MQTT Transport Service</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>mqtt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>queue</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
140
transport/mqtt/build.gradle
Normal file
140
transport/mqtt/build.gradle
Normal file
@ -0,0 +1,140 @@
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
osPackageVersion = "3.8.0"
|
||||
}
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}")
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: "nebula.ospackage"
|
||||
|
||||
buildDir = projectBuildDir
|
||||
version = projectVersion
|
||||
distsDirName = "./"
|
||||
|
||||
// OS Package plugin configuration
|
||||
ospackage {
|
||||
packageName = pkgName
|
||||
version = "${project.version}"
|
||||
release = 1
|
||||
os = LINUX
|
||||
type = BINARY
|
||||
|
||||
into pkgInstallFolder
|
||||
|
||||
user pkgName
|
||||
permissionGroup pkgName
|
||||
|
||||
// Copy the actual .jar file
|
||||
from(mainJar) {
|
||||
// Strip the version from the jar filename
|
||||
rename { String fileName ->
|
||||
"${pkgName}.jar"
|
||||
}
|
||||
fileMode 0500
|
||||
into "bin"
|
||||
}
|
||||
|
||||
// Copy the config files
|
||||
from("target/conf") {
|
||||
exclude "${pkgName}.conf"
|
||||
fileType CONFIG | NOREPLACE
|
||||
fileMode 0754
|
||||
into "conf"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Configure our RPM build task
|
||||
buildRpm {
|
||||
|
||||
arch = NOARCH
|
||||
|
||||
version = projectVersion.replace('-', '')
|
||||
archiveName = "${pkgName}.rpm"
|
||||
|
||||
requires("java-1.8.0")
|
||||
|
||||
from("target/conf") {
|
||||
include "${pkgName}.conf"
|
||||
filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
|
||||
fileType CONFIG | NOREPLACE
|
||||
fileMode 0754
|
||||
into "${pkgInstallFolder}/conf"
|
||||
}
|
||||
|
||||
preInstall file("${buildDir}/control/rpm/preinst")
|
||||
postInstall file("${buildDir}/control/rpm/postinst")
|
||||
preUninstall file("${buildDir}/control/rpm/prerm")
|
||||
postUninstall file("${buildDir}/control/rpm/postrm")
|
||||
|
||||
user pkgName
|
||||
permissionGroup pkgName
|
||||
|
||||
// Copy the system unit files
|
||||
from("${buildDir}/control/${pkgName}.service") {
|
||||
addParentDirs = false
|
||||
fileMode 0644
|
||||
into "/usr/lib/systemd/system"
|
||||
}
|
||||
|
||||
directory(pkgLogFolder, 0755)
|
||||
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
|
||||
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
|
||||
}
|
||||
|
||||
// Same as the buildRpm task
|
||||
buildDeb {
|
||||
|
||||
arch = "all"
|
||||
|
||||
archiveName = "${pkgName}.deb"
|
||||
|
||||
requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless")
|
||||
|
||||
from("target/conf") {
|
||||
include "${pkgName}.conf"
|
||||
filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
|
||||
fileType CONFIG | NOREPLACE
|
||||
fileMode 0754
|
||||
into "${pkgInstallFolder}/conf"
|
||||
}
|
||||
|
||||
configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
|
||||
configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
|
||||
configurationFile("${pkgInstallFolder}/conf/logback.xml")
|
||||
|
||||
preInstall file("${buildDir}/control/deb/preinst")
|
||||
postInstall file("${buildDir}/control/deb/postinst")
|
||||
preUninstall file("${buildDir}/control/deb/prerm")
|
||||
postUninstall file("${buildDir}/control/deb/postrm")
|
||||
|
||||
user pkgName
|
||||
permissionGroup pkgName
|
||||
|
||||
directory(pkgLogFolder, 0755)
|
||||
link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar")
|
||||
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
|
||||
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
|
||||
}
|
||||
337
transport/mqtt/pom.xml
Normal file
337
transport/mqtt/pom.xml
Normal file
@ -0,0 +1,337 @@
|
||||
<!--
|
||||
|
||||
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</groupId>
|
||||
<version>2.2.0-SNAPSHOT</version>
|
||||
<artifactId>transport</artifactId>
|
||||
</parent>
|
||||
<groupId>org.thingsboard.transport</groupId>
|
||||
<artifactId>mqtt</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Thingsboard MQTT Transport Service</name>
|
||||
<url>https://thingsboard.io</url>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<main.dir>${basedir}/../..</main.dir>
|
||||
<pkg.name>tb-mqtt-transport</pkg.name>
|
||||
<pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
|
||||
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
|
||||
<pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common.transport</groupId>
|
||||
<artifactId>mqtt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thingsboard.common</groupId>
|
||||
<artifactId>queue</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.winsw</groupId>
|
||||
<artifactId>winsw</artifactId>
|
||||
<classifier>bin</classifier>
|
||||
<type>exe</type>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${pkg.name}-${project.version}</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${project.basedir}/src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<excludes>
|
||||
<exclude>logback.xml</exclude>
|
||||
</excludes>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-service-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/conf</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-win-conf</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}/conf</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<excludes>
|
||||
<exclude>logback.xml</exclude>
|
||||
</excludes>
|
||||
<filtering>false</filtering>
|
||||
</resource>
|
||||
<resource>
|
||||
<directory>src/main/conf</directory>
|
||||
<excludes>
|
||||
<exclude>tb-mqtt-transport.conf</exclude>
|
||||
</excludes>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${project.build.directory}/control</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/control</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/unix.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>copy-windows-control</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>copy-resources</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/scripts/windows</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<filters>
|
||||
<filter>src/main/filters/windows.properties</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-winsw-service</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>copy</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>com.sun.winsw</groupId>
|
||||
<artifactId>winsw</artifactId>
|
||||
<classifier>bin</classifier>
|
||||
<type>exe</type>
|
||||
<destFileName>service.exe</destFileName>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
<outputDirectory>${pkg.win.dist}</outputDirectory>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>**/logback.xml</exclude>
|
||||
</excludes>
|
||||
<archive>
|
||||
<manifestEntries>
|
||||
<Implementation-Title>ThingsBoard MQTT Transport Service</Implementation-Title>
|
||||
<Implementation-Version>${project.version}</Implementation-Version>
|
||||
</manifestEntries>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<mainClass>org.thingsboard.server.mqtt.ThingsboardMqttTransportApplication</mainClass>
|
||||
<classifier>boot</classifier>
|
||||
<layout>ZIP</layout>
|
||||
<executable>true</executable>
|
||||
<excludeDevtools>true</excludeDevtools>
|
||||
<embeddedLaunchScriptProperties>
|
||||
<confFolder>${pkg.installFolder}/conf</confFolder>
|
||||
<logFolder>${pkg.unixLogFolder}</logFolder>
|
||||
<logFilename>${pkg.name}.out</logFilename>
|
||||
<initInfoProvides>${pkg.name}</initInfoProvides>
|
||||
</embeddedLaunchScriptProperties>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.fortasoft</groupId>
|
||||
<artifactId>gradle-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<tasks>
|
||||
<task>build</task>
|
||||
<task>buildDeb</task>
|
||||
<task>buildRpm</task>
|
||||
</tasks>
|
||||
<args>
|
||||
<arg>-PprojectBuildDir=${project.build.directory}</arg>
|
||||
<arg>-PprojectVersion=${project.version}</arg>
|
||||
<arg>-PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</arg>
|
||||
<arg>-PpkgName=${pkg.name}</arg>
|
||||
<arg>-PpkgInstallFolder=${pkg.installFolder}</arg>
|
||||
<arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg>
|
||||
</args>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>invoke</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<configuration>
|
||||
<finalName>${pkg.name}</finalName>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/windows.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-install-plugin</artifactId>
|
||||
<configuration>
|
||||
<file>${project.build.directory}/${pkg.name}.deb</file>
|
||||
<artifactId>${project.artifactId}</artifactId>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<version>${project.version}</version>
|
||||
<classifier>deb</classifier>
|
||||
<packaging>deb</packaging>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>install-deb</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>install-file</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</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>
|
||||
71
transport/mqtt/src/main/assembly/windows.xml
Normal file
71
transport/mqtt/src/main/assembly/windows.xml
Normal file
@ -0,0 +1,71 @@
|
||||
<!--
|
||||
|
||||
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.
|
||||
|
||||
-->
|
||||
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
|
||||
<id>windows</id>
|
||||
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
|
||||
<!-- Workaround to create logs directory -->
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>${pkg.win.dist}</directory>
|
||||
<outputDirectory>logs</outputDirectory>
|
||||
<excludes>
|
||||
<exclude>*/**</exclude>
|
||||
</excludes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${pkg.win.dist}/conf</directory>
|
||||
<outputDirectory>conf</outputDirectory>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
|
||||
<files>
|
||||
<file>
|
||||
<source>${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</source>
|
||||
<outputDirectory>lib</outputDirectory>
|
||||
<destName>${pkg.name}.jar</destName>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/service.exe</source>
|
||||
<outputDirectory/>
|
||||
<destName>${pkg.name}.exe</destName>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/service.xml</source>
|
||||
<outputDirectory/>
|
||||
<destName>${pkg.name}.xml</destName>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/install.bat</source>
|
||||
<outputDirectory/>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
<file>
|
||||
<source>${pkg.win.dist}/uninstall.bat</source>
|
||||
<outputDirectory/>
|
||||
<lineEnding>windows</lineEnding>
|
||||
</file>
|
||||
</files>
|
||||
</assembly>
|
||||
43
transport/mqtt/src/main/conf/logback.xml
Normal file
43
transport/mqtt/src/main/conf/logback.xml
Normal file
@ -0,0 +1,43 @@
|
||||
<?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>
|
||||
|
||||
<appender name="fileLogAppender"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${pkg.logFolder}/${pkg.name}.log</file>
|
||||
<rollingPolicy
|
||||
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<fileNamePattern>${pkg.logFolder}/${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>
|
||||
|
||||
<logger name="org.thingsboard.server" level="INFO" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="fileLogAppender"/>
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
23
transport/mqtt/src/main/conf/tb-mqtt-transport.conf
Normal file
23
transport/mqtt/src/main/conf/tb-mqtt-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"
|
||||
export LOG_FILENAME=${pkg.name}.out
|
||||
export LOADER_PATH=${pkg.installFolder}/conf
|
||||
1
transport/mqtt/src/main/filters/unix.properties
Normal file
1
transport/mqtt/src/main/filters/unix.properties
Normal file
@ -0,0 +1 @@
|
||||
pkg.logFolder=${pkg.unixLogFolder}
|
||||
2
transport/mqtt/src/main/filters/windows.properties
Normal file
2
transport/mqtt/src/main/filters/windows.properties
Normal file
@ -0,0 +1,2 @@
|
||||
pkg.logFolder=${BASE}\\logs
|
||||
pkg.winWrapperLogFolder=%BASE%\\logs
|
||||
6
transport/mqtt/src/main/scripts/control/deb/postinst
Normal file
6
transport/mqtt/src/main/scripts/control/deb/postinst
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
chown -R ${pkg.name}: ${pkg.logFolder}
|
||||
chown -R ${pkg.name}: ${pkg.installFolder}
|
||||
update-rc.d ${pkg.name} defaults
|
||||
|
||||
3
transport/mqtt/src/main/scripts/control/deb/postrm
Normal file
3
transport/mqtt/src/main/scripts/control/deb/postrm
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
update-rc.d -f ${pkg.name} remove
|
||||
18
transport/mqtt/src/main/scripts/control/deb/preinst
Normal file
18
transport/mqtt/src/main/scripts/control/deb/preinst
Normal file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
if ! getent group ${pkg.name} >/dev/null; then
|
||||
addgroup --system ${pkg.name}
|
||||
fi
|
||||
|
||||
if ! getent passwd ${pkg.name} >/dev/null; then
|
||||
adduser --quiet \
|
||||
--system \
|
||||
--ingroup ${pkg.name} \
|
||||
--quiet \
|
||||
--disabled-login \
|
||||
--disabled-password \
|
||||
--home ${pkg.installFolder} \
|
||||
--no-create-home \
|
||||
-gecos "Thingsboard application" \
|
||||
${pkg.name}
|
||||
fi
|
||||
5
transport/mqtt/src/main/scripts/control/deb/prerm
Normal file
5
transport/mqtt/src/main/scripts/control/deb/prerm
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then
|
||||
service ${pkg.name} stop
|
||||
fi
|
||||
9
transport/mqtt/src/main/scripts/control/rpm/postinst
Normal file
9
transport/mqtt/src/main/scripts/control/rpm/postinst
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
chown -R ${pkg.name}: ${pkg.logFolder}
|
||||
chown -R ${pkg.name}: ${pkg.installFolder}
|
||||
|
||||
if [ $1 -eq 1 ] ; then
|
||||
# Initial installation
|
||||
systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
6
transport/mqtt/src/main/scripts/control/rpm/postrm
Normal file
6
transport/mqtt/src/main/scripts/control/rpm/postrm
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 -ge 1 ] ; then
|
||||
# Package upgrade, not uninstall
|
||||
systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
6
transport/mqtt/src/main/scripts/control/rpm/preinst
Normal file
6
transport/mqtt/src/main/scripts/control/rpm/preinst
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
getent group ${pkg.name} >/dev/null || groupadd -r ${pkg.name}
|
||||
getent passwd ${pkg.name} >/dev/null || \
|
||||
useradd -d ${pkg.installFolder} -g ${pkg.name} -M -r ${pkg.name} -s /sbin/nologin \
|
||||
-c "Thingsboard application"
|
||||
6
transport/mqtt/src/main/scripts/control/rpm/prerm
Normal file
6
transport/mqtt/src/main/scripts/control/rpm/prerm
Normal file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $1 -eq 0 ] ; then
|
||||
# Package removal, not upgrade
|
||||
systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :
|
||||
fi
|
||||
@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=${pkg.name}
|
||||
After=syslog.target
|
||||
|
||||
[Service]
|
||||
User=${pkg.name}
|
||||
ExecStart=${pkg.installFolder}/bin/${pkg.name}.jar
|
||||
SuccessExitStatus=143
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
87
transport/mqtt/src/main/scripts/windows/install.bat
Normal file
87
transport/mqtt/src/main/scripts/windows/install.bat
Normal file
@ -0,0 +1,87 @@
|
||||
@ECHO OFF
|
||||
|
||||
setlocal ENABLEEXTENSIONS
|
||||
|
||||
@ECHO Detecting Java version installed.
|
||||
:CHECK_JAVA_64
|
||||
@ECHO Detecting if it is 64 bit machine
|
||||
set KEY_NAME="HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Java Runtime Environment"
|
||||
set VALUE_NAME=CurrentVersion
|
||||
|
||||
FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
|
||||
set ValueName=%%A
|
||||
set ValueType=%%B
|
||||
set ValueValue=%%C
|
||||
)
|
||||
@ECHO CurrentVersion %ValueValue%
|
||||
|
||||
SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%"
|
||||
SET VALUE_NAME=JavaHome
|
||||
|
||||
if defined ValueName (
|
||||
FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
|
||||
set ValueName2=%%A
|
||||
set ValueType2=%%B
|
||||
set JRE_PATH2=%%C
|
||||
|
||||
if defined ValueName2 (
|
||||
set ValueName = %ValueName2%
|
||||
set ValueType = %ValueType2%
|
||||
set ValueValue = %JRE_PATH2%
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
IF NOT "%JRE_PATH2%" == "" GOTO JAVA_INSTALLED
|
||||
|
||||
:CHECK_JAVA_32
|
||||
@ECHO Detecting if it is 32 bit machine
|
||||
set KEY_NAME="HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment"
|
||||
set VALUE_NAME=CurrentVersion
|
||||
|
||||
FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
|
||||
set ValueName=%%A
|
||||
set ValueType=%%B
|
||||
set ValueValue=%%C
|
||||
)
|
||||
@ECHO CurrentVersion %ValueValue%
|
||||
|
||||
SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%"
|
||||
SET VALUE_NAME=JavaHome
|
||||
|
||||
if defined ValueName (
|
||||
FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
|
||||
set ValueName2=%%A
|
||||
set ValueType2=%%B
|
||||
set JRE_PATH2=%%C
|
||||
|
||||
if defined ValueName2 (
|
||||
set ValueName = %ValueName2%
|
||||
set ValueType = %ValueType2%
|
||||
set ValueValue = %JRE_PATH2%
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED
|
||||
|
||||
:JAVA_INSTALLED
|
||||
|
||||
@ECHO Java 1.8 found!
|
||||
@ECHO Installing ${pkg.name} ...
|
||||
|
||||
%BASE%${pkg.name}.exe install
|
||||
|
||||
@ECHO ${pkg.name} installed successfully!
|
||||
|
||||
GOTO END
|
||||
|
||||
:JAVA_NOT_INSTALLED
|
||||
@ECHO Java 1.8 or above is not installed
|
||||
@ECHO Please go to https://java.com/ and install Java. Then retry installation.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:END
|
||||
|
||||
|
||||
36
transport/mqtt/src/main/scripts/windows/service.xml
Normal file
36
transport/mqtt/src/main/scripts/windows/service.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<service>
|
||||
<id>${pkg.name}</id>
|
||||
<name>${project.name}</name>
|
||||
<description>${project.description}</description>
|
||||
<workingdirectory>%BASE%\conf</workingdirectory>
|
||||
<logpath>${pkg.winWrapperLogFolder}</logpath>
|
||||
<logmode>rotate</logmode>
|
||||
<env name="LOADER_PATH" value="%BASE%\conf" />
|
||||
<executable>java</executable>
|
||||
<startargument>-Xloggc:%BASE%\logs\gc.log</startargument>
|
||||
<startargument>-XX:+HeapDumpOnOutOfMemoryError</startargument>
|
||||
<startargument>-XX:+PrintGCDetails</startargument>
|
||||
<startargument>-XX:+PrintGCDateStamps</startargument>
|
||||
<startargument>-XX:+PrintHeapAtGC</startargument>
|
||||
<startargument>-XX:+PrintTenuringDistribution</startargument>
|
||||
<startargument>-XX:+PrintGCApplicationStoppedTime</startargument>
|
||||
<startargument>-XX:+UseGCLogFileRotation</startargument>
|
||||
<startargument>-XX:NumberOfGCLogFiles=10</startargument>
|
||||
<startargument>-XX:GCLogFileSize=10M</startargument>
|
||||
<startargument>-XX:-UseBiasedLocking</startargument>
|
||||
<startargument>-XX:+UseTLAB</startargument>
|
||||
<startargument>-XX:+ResizeTLAB</startargument>
|
||||
<startargument>-XX:+PerfDisableSharedMem</startargument>
|
||||
<startargument>-XX:+UseCondCardMark</startargument>
|
||||
<startargument>-XX:CMSWaitDuration=10000</startargument>
|
||||
<startargument>-XX:+UseParNewGC</startargument>
|
||||
<startargument>-XX:+UseConcMarkSweepGC</startargument>
|
||||
<startargument>-XX:+CMSParallelRemarkEnabled</startargument>
|
||||
<startargument>-XX:+CMSParallelInitialMarkEnabled</startargument>
|
||||
<startargument>-XX:+CMSEdenChunksRecordAlways</startargument>
|
||||
<startargument>-XX:CMSInitiatingOccupancyFraction=75</startargument>
|
||||
<startargument>-XX:+UseCMSInitiatingOccupancyOnly</startargument>
|
||||
<startargument>-jar</startargument>
|
||||
<startargument>%BASE%\lib\${pkg.name}.jar</startargument>
|
||||
|
||||
</service>
|
||||
9
transport/mqtt/src/main/scripts/windows/uninstall.bat
Normal file
9
transport/mqtt/src/main/scripts/windows/uninstall.bat
Normal file
@ -0,0 +1,9 @@
|
||||
@ECHO OFF
|
||||
|
||||
@ECHO Stopping ${pkg.name} ...
|
||||
net stop ${pkg.name}
|
||||
|
||||
@ECHO Uninstalling ${pkg.name} ...
|
||||
%~dp0${pkg.name}.exe uninstall
|
||||
|
||||
@ECHO DONE.
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
<modules>
|
||||
<!--<module>coap</module>-->
|
||||
<module>mqtt-transport</module>
|
||||
<module>mqtt</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user