blob: bf078357d8c70da3e157c85dc4e9ad40d74778df [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You 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.
= Ignite.NET Configuration Options
== Overview
Ignite.NET nodes can be configured in a variety of ways and then started via configuration-specific `Ignition.Start*` methods.
== Configure Programmatically in C#
Use the `Ignition.Start(IgniteConfiguration)` method to configure an Ignite.NET node from your C# application.
[tabs]
--
tab:Sample C# Configuration[]
[source,csharp]
----
Ignition.Start(new IgniteConfiguration
{
DiscoverySpi = new TcpDiscoverySpi
{
IpFinder = new TcpDiscoveryStaticIpFinder
{
Endpoints = new[] {"127.0.0.1:47500..47509"}
},
SocketTimeout = TimeSpan.FromSeconds(0.3)
},
IncludedEventTypes = EventType.CacheAll,
JvmOptions = new[] { "-Xms1024m", "-Xmx1024m" }
});
----
--
== Configure With Application or Web Config Files
`Ignition.StartFromApplicationConfiguration` methods read configuration from `Apache.Ignite.Core.IgniteConfigurationSection`
of the app.config or web.config files.
The `IgniteConfigurationSection.xsd` schema file can be found next to Apache.Ignite.Core.dll in the binary distribution,
and in `Apache.Ignite.Schema` NuGet package. Include it in your project with `None` build action to enable IntelliSense
in Visual Studio while editing `IgniteConfigurationSection` in the config files.
[tabs]
--
tab:Configure in app.config[]
[source,xml]
----
<configuration>
<configSections>
<section name="igniteConfiguration" type="Apache.Ignite.Core.IgniteConfigurationSection, Apache.Ignite.Core" />
</configSections>
<runtime>
<gcServer enabled="true"/>
</runtime>
<igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" gridName="myGrid1">
<discoverySpi type="TcpDiscoverySpi">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500..47509</string>
</endpoints>
</ipFinder>
</discoverySpi>
<cacheConfiguration>
<cacheConfiguration cacheMode='Replicated' readThrough='true' writeThrough='true' />
<cacheConfiguration name='secondCache' />
</cacheConfiguration>
<includedEventTypes>
<int>42</int>
<int>TaskFailed</int>
<int>JobFinished</int>
</includedEventTypes>
<userAttributes>
<pair key='myNode' value='true' />
</userAttributes>
<JvmOptions>
<string>-Xms1024m</string>
<string>-Xmx1024m</string>
</JvmOptions>
</igniteConfiguration>
</configuration>
----
tab:Use in C#[]
[source,csharp]
----
var ignite = Ignition.StartFromApplicationConfiguration("igniteConfiguration");
----
--
[NOTE]
====
[discrete]
To add the `IgniteConfigurationSection.xsd` schema file to a Visual Studio project go to `Projects` menu and click on
`Add Existing Item...` menu item. After that locate `IgniteConfigurationSection.xsd` inside of the Apache Ignite distribution
and pick it up. Alternatively, install NuGet package: `Install-Package Apache.Ignite.Schema`. This will add an xsd file to
the project automatically. To improve editing, make sure that `Statement Completion` options are enabled in
`Tools - Options - Text Editor - XML`.
====
=== Ignite Configuration Section Syntax
The configuration section maps directly to `IgniteConfiguration` class:
* Simple properties (strings, primitives, enums) map to XML attributes (attribute name = camelCased C# property name).
* Complex properties map to nested XML elements (element name = camelCased C# property name).
* When a complex property is an interface or abstract class, `type` attribute is used to specify the type, using *assembly-qualified name*. For built-in types (like TcpDiscoverySpi in the code sample above) assembly name and namespace can be omitted.
* When in doubt, consult the schema in `IgniteConfigurationSection.xsd`.
== Configure With Spring XML
Spring XML enables the native java-based Ignite configuration method. A Spring config file can be provided via
the `Ignition.Start(string)` method or the `IgniteConfiguration.SpringConfigUrl` property. This configuration method
is useful when some Java property is not natively supported by Ignite.NET.
When the `IgniteConfiguration.SpringConfigUrl` property is used, the Spring config is loaded first, and other
`IgniteConfiguration` properties are applied on top of it.
[tabs]
--
tab:Configure With Spring XML[]
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="localHost" value="127.0.0.1"/>
<property name="gridName" value="grid1"/>
<property name="userAttributes">
<map>
<entry key="my_attr" value="value1"/>
</map>
</property>
<property name="cacheConfiguration">
<list>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="cache1"/>
<property name="startSize" value="10"/>
</bean>
</list>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>127.0.0.1:47500..47509</value>
</list>
</property>
</bean>
</property>
<property name="socketTimeout" value="300" />
</bean>
</property>
</bean>
</beans>
----
tab:Use in C#[]
[source,csharp]
----
var ignite = Ignition.Start("spring-config.xml");
----
--