What version(s) of adjacent tools is(are) compatible with Spring XD? - spring-xd

Spring XD interacts with the following backing components:
Zookeeper
JDBC Datastore (MySql, Postgres, etc...)
RabbitMQ, Redis, or Kafka (Transport)
Redis (Analytics)
Is there any documentation on which versions of these technologies should be used when running Spring XD in Distributed Mode?
Presumably when new versions of Spring XD are released, the compatible versions of the adjacent technologies may change. Is this documented anywhere?

I found a dependency list in the build.gradle file in GitHub. This is from the master:
ext {
xdAdminUIVersion = '1.2.0.RELEASE'
// Not in IO
activemqVersion = '5.6.0'
apacheFtpServerVersion = '1.0.6'
args4jVersion = '2.0.16'
curatorVersion = '2.6.0'
equalsverifierVersion = '1.1.3'
ftpServerVersion = '1.0.6'
apacheSshdVersion = '0.10.1'
greenmailVersion = '1.3.1b'
httpClientVersion = '4.2.5'
jcloudsVersion = '1.7.0'
oracleToolsVersion = '1.2.2'
platformVersion = '1.0.1.RELEASE'
postgresqlVersion = '9.4-1201-jdbc41'
splunkVersion = '1.3.0'
springBatchAdminMgrVersion = '1.3.0.RELEASE'
springIntegrationSplunkVersion = '1.1.0.RELEASE'
springIntegrationKafkaVersion = '1.2.1.RELEASE'
kafkaVersion = '0.8.2.1'
springShellVersion = '1.1.0.RELEASE'
zookeeperVersion = '3.4.6'
sparkVersion = '1.2.1'
sparkScalaVersion = '2.10'
sqoopVersion = '1.4.5'
// Also in IO
nettyVersion = '3.7.0.Final' // N.B. Reactor depends on Netty 4
hadoopGuavaVersion = '11.0.2' // This is only used by the mini cluster in the spring-xd-batch-extension tests
cdh5GuavaVersion = '14.0.1' // This is only used by the CDH 5 module for the xd/lib/cdh5 classpath jars
oldGuavaVersion = '15.0' // This is only used by spring-xd-integration-test, IO uses version 17.0
guavaVersion = '16.0.1'
springDataHadoopBase = '2.2.0.RELEASE'
// //Reactor 1.1 is used in spring-xd-extension-batch transitively though spring integration
// reactor11xVersion = '1.1.5.RELEASE'
singleNodeServerProcess = new SingleNodeServerProcess()
}

Related

Changing data in OpenApi info block

I'm trying to change my OpenApi info block properties.
More specifically I'm trying to change the value of the version tag in my OpenApi programmatically.
For example every new build I want a new version number.
I have tried using placeholders and giving them values in the build.gradle but haven't got it working.
openapi:
openapi: 3.1.0
info:
title: Dummy Bookshop
summary: A fictitious API demonstrating the OpenAPI Specification's features
version: ${apiVersion}
description: A fictius description.
termsOfService: https://www.dummy-book.shop/tos
contact:
name: Bookshop Support team
url: https://www.dummy-book.shop/support
email: support#dummy-book.shop
license:
name: Apache 2.0
identifier: Apache-2.0
paths: {}
build.gradle:
ext {
apiVersion = '1.0.1'
}
Does anyone have any ideas on how to get this working or is there a plugin that does this?
Create a script in your build.gradle to replace the version with the gradle version. This is easily done using the groovy YamlSlurper.
task updateYaml() {
def fileDir = "$projectDir/src/main/resources/static/"
def fileName = "myOpenApi.yml"
def reader = new FileReader(fileDir + fileName)
def slurper = new YamlSlurper()
def builder = new YamlBuilder()
builder slurper.parse(reader)
builder.content.info.version = project.version
doLast {
File newOASFile = new File(fileDir, "finalSpec.yml")
newOASFile.write(builder.toString())
}
}
Once you have the task working, set your dependencies properly. This assumes that your generation task is called generateMyOpenApi
generateMyOpenApi.dependsOn updateYaml
processResources.dependsOn generateMyOpenApi

Creating backend service with multiple umigs

Need some help creating a backend service with multiple umigs by using terraform code. using the below code but not able to assign multiple umigs.
Any help will be highly appreciated.
resource "google_compute_backend_service" “test-bs" {
project = module.test.project_id
name = "test-bs"
provider = google
protocol = "HTTPS"
port_name = "services"
load_balancing_scheme = "EXTERNAL"
timeout_sec = 30
enable_cdn = false
health_checks = [google_compute_health_check.test-hc.id]
backend {
group =“https://www.googleapis.com/compute/v1/projects/test/zones/us-east4-c/instanceGroups/umig-01"]
, "https://www.googleapis.com/compute/v1/projects/test/zones/us-east4-c/instanceGroups/umig-02"}
balancing_mode = "UTILIZATION"
capacity_scaler = 1.0

cargo check fails to build actix-cors

I'm following the guides at https://docs.near.org/docs/tutorials/near-indexer
to test out an indexer. However, when I run
cargo check
An error shows up when building actix-cors:
Checking actix-cors v0.6.0-beta.2 (https://github.com/near/actix-extras.git?branch=actix-web-4-beta.6#eb38fbcc)
error[E0053]: method `error_response` has an incompatible type for trait
--> /<MY HOME DIR>/.cargo/git/checkouts/actix-extras-c37ac6c43c868d63/eb38fbc/actix-cors/src/error.rs:53:5
...
Looking at some actix issue here: https://github.com/actix/actix-web/issues/2185
I think it's due to something wrong in actix beta versioning. Is there a more stable version to use?
My Cargo toml file looks like this:
[package]
name = "example-indexer"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
near-indexer = { git = "https://github.com/nearprotocol/nearcore", rev="a668e4399655af513b0d90e0be694dad2448e6cd" }
actix = "=0.11.0"
openssl-probe = { version = "0.1.2" }
tokio = { version = "1.1", features = ["sync"] }
serde = { version = "1", features = [ "derive" ] }
serde_json = "1.0.55"

how do i configure static versioning (digest) for the asset-pipeline (bertramlabs) in my spring boot 2 application?

spring boot version: 2.0.4.RELEASE
asset-pipeline version: 3.0.3
Hi
we're using this plugin, because we know it from our grails applications.
We liked it, because it has a simple configuration (for our requirements)
Now we're developing a spring boot application and we used this plugin too and we're (almost) happy with it.
But when we run the application in the development mode the assets don't have a digest like /assets/my-styles-b5d2d7380a49af2d7ca7943a9aa74f62s.css
How do i configure the plugin to create a digest for all our resources?
currently we're using this configuration:
assets {
minifyJs = true
minifyCss = true
enableSourceMaps = false
includes = ["application.js", "application.scss"]
}
And we're using thymeleaf for our templates:
<link th:href="#{/assets/application.css}" rel="stylesheet">
I found a solution...
when you use the asset-pipeline, you get a gradle task assetCompile.
when creating a .war file, you can add this gradle task and replace all the assets with the versioned files.
when you want to use the versioned files in your production mode you have to use this configuration (build.gradle)
assets {
minifyJs = true
minifyCss = true
skipNonDigests = true
packagePlugin = true
includes = ["application.js", "application.scss"]
}
...
war {
dependsOn 'assetCompile'
from( "${buildDir}/assets", {
into "/WEB-INF/classes/META-INF/assets"
})
baseName = '<your project>'
enabled = true
}
that's all.
When running the assetCompile task, a manifest.properties file is created. This file contains the mapping of the original filename and the versioned one.
This file is used by the application to find the correct resource, e.g. application.css=application-79a3c8a2f085ecefadgfca3cda6fe3d12.css
I created a plugin which enables the url replacement for assets with digest in the production mode:
Dependency
compile 'ch.itds.taglib:asset-pipeline-thymeleaf-taglib:1.0.0'
Configuration
#Configuration
public class ThymeleafConfig {
#Bean
public AssetDialect assetDialect() {
return new AssetDialect();
}
}
Usage
<html xmlns:asset="https://www.itds.ch/taglib/asset">
<script asset:src="#{/assets/main.js}"></script>
</html>
The asset:src="#{/assets/main.js}" will be replaced with src="/assets/main-DIGEST.js".
The replacement happens only if the developmentRuntime of the asset pipeline is disabled.
A little bit more details are available on my blog post: https://kobelnet.ch/Blog/2019/03/12/assetpipelinethymeleaftaglib

Configure swagger in gradle build script with kotlin dsl

I'm trying to switch my simple project from Groovy to Kotlin in build scripts.
I'm using this plugin:
https://github.com/gigaSproule/swagger-gradle-plugin
I have this configuration in my build script:
swagger{
apiSource {
springmvc = false
locations = ['my.location']
schemes = ['https']
host = 'test.com:8080'
info {
title = 'My Service'
version = 'v1'
}
swaggerDirectory = "$buildDir/swagger"
}
To where shall I refer to in this situations?
Shall I do something like?
task( "swagger" ) {
...
}
It is not quite familiar for me.
Thanks.
In case anyone is still looking for this information, this is how you would do it using Gradle Kotlin DSL:
import com.benjaminsproule.swagger.gradleplugin.model.*
plugins {
id("com.benjaminsproule.swagger") version "1.0.0"
}
swagger {
apiSource(closureOf<ApiSourceExtension> {
springmvc = false
schemes = mutableListOf("https")
host = "test.com:8080"
info(closureOf<InfoExtension> {
title = "My Service"
version = "v1"
description = "My Service Description"
termsOfService = "http://www.example.com/termsOfService"
contact(closureOf<ContactExtension> {
email = "email#internet.com"
name = "A Developer"
url = "http://www.internet.com"
})
license(closureOf<LicenseExtension> {
url = "http://www.apache.org/licenses/LICENSE-2.0.html"
name = "Apache 2.0"
})
})
locations = mutableListOf("com.foo.fighting")
swaggerDirectory = "$buildDir/swagger"
})
}
I've tested it using Gradle v4.6.

Resources